网页可以通过swf地址给flash传递变量,以值对的形式传递,如下:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
id="LoaderInfoSample" width="100%" height="100%"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="LoaderInfoSample.swf?a=1&b=2" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="LoaderInfoSample.swf?a=1&b=2" quality="high" bgcolor="#869ca7"
width="100%" height="100%" name="LoaderInfoSample" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
ActionSrippt2时,在第一帧就可以直接引用传递进来的这两个变量值了。
AS3抛弃了这种不规范的用法,同意使用LoaderInfo的Parameter属性来完成。
LoaderInfo的帮助文档请参考:http://livedocs.macromedia.com/l ... lay/LoaderInfo.html
LoaderInfo 这个类是专门设计来保存swf,图片,或者其他任意DisplayObject的加载信息的。
swf参数也属于加载信息里的一部分,可以通过LoaderInfo的parameters属性取得,取出的结果是一个数组,可以通过for...in遍历他的值。
示例代码如下:
package org.flashbbs.sample
{
import flash.display.MovieClip;
import flash.display.LoaderInfo;
import flash.text.TextField;
public class LoaderInfoSample extends MovieClip
{
public function LoaderInfoSample(){
var key:String;
var value:String;
var text1:TextField = new TextField();
addChild(text1);
var param:Object = this.root.loaderInfo.parameters;
for (key in param) {
value = String(param[key]);
text1.appendText(key + "=" +value);
}
}
}
}
还有一点要注意的是,LoaderInfo属于As3的类,如果flash包含as1或者as2的代码,则它无法取出值,只能取出null
ActionScript3中swf传递参数及flashVars的处理方法
最新推荐文章于 2021-06-09 12:00:27 发布