22.3.从HTML中传递参数给Flash

问题
我想把HTML中的变量作为参数传递给SWF.
解决办法
使用FlashVars.
讨论
FlashVars 提供一个解决方案用户把HTML变量作为参数传递给SWF。这点在传递一些简单的数据给SWF时是非常有用的功能,例如当web services URL发生变化时你可能需要传递一个新的URL给SWF,这样就可避免再次重新编译SWF。

FlashVars 方案有两部分组成,一部分通过HTML实现,另一部分由ActionScript实现。

HTML部分需要在<object> 标签中添加一个<param name="FlashVars"> 标签, 例如下面的FlashVars 定义了两个键值对:url1 和url2:
url1=http://www.example.com&url2=http://www.sample.com
在ActionScript方面,可通过任何可视化组件都有的root.loaderInfo.parameters 属性得到FlashVars传递进来的参数,root.loaderInfo.parameters 属性是一个关联数组,例如根据上面例子的变量值,root.loaderInfo.parameters 属性将得到两个键值:url1 和url2 。

通过JavaScript的FlashVars,我们可传递一个字符串序列给SWF,下面的例子演示如何编写<object> 和<embed> 标签以及通过FlashVars传递字符串序列给SWF:
+展开
-JavaScript
// Retrieve the query string, and assign it to a variable.
var parameters = window.location.search.substr(1);
var objectEmbed = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="Example" width="100%" height="100%"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">';
objectEmbed += '<param name="movie" value="Example.swf" />';
objectEmbed += '<param name="quality" value="high" />';
objectEmbed += '<param name="bgcolor" value="#869ca7" />';
objectEmbed += '<param name="allowScriptAccess" value="sameDomain" />';
objectEmbed
+=
'<param
name="FlashVars"
value="'
+
parameters
+
'"
/>';
objectEmbed += '<embed src="Example.swf" quality="high" bgcolor="#869ca7" width="100%"
height="100%" name="Example" align="middle" play="true" loop="false" quality="high"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" FlashVars="' + parameters +
'"></embed>';
objectEmbed += '</object>';
document.write(objectEmbed);

FlashVars 是Flash 播放器一个重要的功能,但是仅仅用FlashVars 是不够的,它只能传递一些简单的数据,如果要传递复杂的数据,可使用URLLoader 对象。

加支付宝好友偷能量挖...


评论(0)网络
阅读(96)喜欢(0)flash/flex/fcs/AIR