学习 Adobe Flash 中的 ActionScript 2.0 |
|
|
|
| 数据和数据类型 > 关于变量 > 关于加载变量 > 使用 URL 中的变量 | |||
当您在 Flash 中开发应用程序或简单的示例时,可能需要将值从 HTML 页传递到 Flash 文档中。传递的值有时称为查询字符串 或 URL 编码变量。例如,如果要在 Flash 中创建一个菜单,URL 变量是非常有用的。可以将菜单初始化为默认情况下显示正确的导航。或者,可以在 Flash 中构建一个图像查看器并定义要在网站上显示的默认图像。
在文档中使用 URL 变量:
this.createTextField("myTxt", 100, 0, 0, 100, 20);
myTxt.autoSize = "left";
myTxt.text = _level0.myURL;
文本字段显示 undefined。如果要在继续之前确保正确定义变量,需要检查 Flash 中是否存在变量。可以通过查看它们是否为未定义来实现此目的。
this.createTextField("myTxt", 100, 0, 0, 100, 20);
myTxt.autoSize = "left";
if (_level0.myURL == undefined) {
myTxt.text = "myURL is not defined";
} else {
myTxt.text = _level0.myURL;
}
在发布 Flash 文档时,默认情况下会在 SWF 文件所在的目录下创建一个 HTML 文档。如果没有创建 HTML 文件,请选择"文件">"发布设置",确保选择了"格式"选项卡中的 HTML。然后再次发布文档。
以下代码演示了文档中负责将 Flash 文档嵌入到 HTML 页中的 HTML。需要查看此 HTML 以了解在下一步(为 URL 变量增加额外的代码)中 URL 变量是如何工作的。
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="urlvariables" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="urlvariables.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="urlvariables.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="urlvariables" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_cn" /> </object>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="urlvariables" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="urlvariables.swf?myURL=http://weblogs.macromedia.com" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="urlvariables.swf?myURL=http://weblogs.macromedia.com" quality="high" bgcolor="#ffffff" width="550" height="400" name="urlvariables" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /> </object>
?myURL=http://weblogs.macromedia.com
用以下文本将其替换掉:
?myURL=http://weblogs.macromedia.com&myTitle=adobe+News+Aggregator
请注意,需要对 object 标签和 embed 标签做同样的更改,以保持所有浏览器之间的一致性。您可能会注意到单词被 + 号分隔开了。单词用这种方式隔开是因为值是 URL 编码的,+ 号表示单个空格。
|
注意 |
有关常见 URL 编码的特殊字符的列表,请参阅 Flash 技术说明,URL 编码:从文本文件中读取特殊字符。 |
因为"and"字符 (&) 用作不同名称/值对的分隔符,所以如果传递的值包含"and"字符,可能会出现意外的结果。考虑到名称/值对的性质和语法分析,如果您将以下值传递到 Flash,
my.swf?name=PB+&+J&flavor=strawberry+rhubarb
Flash 将在根范围中构建以下变量(和值):
'name': 'PB' (note space at end of value) 'J': '' (note space at beginning of variable name and an empty value) 'flavor': 'strawberryrhubarb'
为了避免这种情况,您需要将名称/值对中的"and"(&) 字符转义 为 URL 编码的等效字符 (%26)。
?myURL=http://weblogs.macromedia.com&myTitle=Adobe+News+Aggregator
用以下代码替换该代码:
?myURL=PB+%26+J&flavor=strawberry+rhubarb
您会看到 Flash 创建了以下名称/值对。
'name': 'PB&J' 'flavor': 'strawberryrhubarb'
|
注意 |
所有浏览器都将支持长达 64K(65535 字节)的字符串长度。为了能在所有浏览器中使用,必须在 |
|
|
|
|