Web页面向内嵌的Flash (AS) 传递参数的方法

Web页面想Flash传递参数大致分为下面三类

1.通过swf文件的URL传递:即在swf文件的URL后加入形如?a=A&b=B的字符串。
2.通过swf的Activex控件参数传递:即在Object的属性中<param name="FlashVars" value="a=A&b=B"。

这 两种作法的结果都是在swf文件的顶层对象中生成包含两个参数的参数列表:a=A和b=B。在使用ActionScript2.0以前的版本的Flash 中,可以直接通过引用顶层文件对象的root.a,root.b或_level0.a,_level0.b属性就可以访问到了。

在ActionScripti3.0 后,由于加强了面向对象的概念,因此默认的参数被包装在了顶层对象(DisplayObject类型)所包含的LoaderInfo对象的 parameters属性中。通过访问root.loaderInfo.parameters属性可以对传入的参数进行遍历。


例如在文档类中定义var param:Object = root.loaderInfo.parameters;
如果取u1的值,可以用param["u1"],同样u2的值:param["u2"]
做了个小例子,document class如下:

    
    

package {

import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageScaleMode;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;

public
class LoaderInfoDemo extends Sprite {

public function LoaderInfoDemo(){

stage.scaleMode
= StageScaleMode.NO_SCALE;

var out_txt:TextField
= createText();
out_txt.border
= true;
out_txt.borderColor
= 0xFF6600 ;
out_txt.y
= 20 ;
addChild(out_txt);

var info_txt:TextField
= createText();
info_txt.text
= " 修改loaderInfoDemo.swf?msg=xxx中的xxx值,然后回车 " ;
info_txt.autoSize
= TextFieldAutoSize.LEFT;
addChild(info_txt);

var param:Object
= root.loaderInfo.parameters;
if (param[ " msg " ] != null){
out_txt.text
= param[ " msg " ];
trace(
" value: " + param[ " msg " ]);
}
else {
out_txt.text
= " null " ;
trace(
" value:null " );
}
}

private function createText():TextField{
var tmp:TextField
= new TextField();
tmp.selectable
= false;
tmp.width
= 100 ;
tmp.height
= 20 ;
return tmp;
}
}
}

3.第三类方法是在影片内部,调用loadVariables方法,从指定位置主动读取配置参数,并将参数数值传递到指定的对象内部。

下面的示例将名为 params.txt 的文本文件中的信息加载到使用 createEmptyMovieClip() 创建的影片剪辑 target_mc 中。setInterval() 函数用于检查加载进度。该脚本检查 params.txt 文件中是否存在名为 done 的变量。

this.createEmptyMovieClip("target_mc", this.getNextHighestDepth());
loadVariables("params.txt", target_mc);
function checkParamsLoaded() {
if (target_mc.done == undefined) {
trace("not yet.");
} else {
trace("finished loading. killing interval.");
trace("-------------");
for (i in target_mc) {
trace(i+": "+target_mc[i]);
}
trace("-------------");
clearInterval(param_interval);
}
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);

外部文件 params.txt 包括以下文本:

var1="hello"&var2="goodbye"&done="done"
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值