所谓通讯就是信息的交换,这里我们谈的是js与Flash之间的数据交换的几种方式:
1.Flashvars
Flashvars - Flash初始化信息的传递者,它由N组 名值对 组成;当你的flash文件需要某些初始信息的时候就需要用到它。
1)如果你使用标签嵌入Flash的方法,应像这样:<param name="flashvars" value="text=这是flashvars传入的数据啊" /> 用 param 标签传递信息;
2)如果你使用的是 swfobject 就是用上面提到的,定义一个flashvars的变量然后在调用swfobject.embedSWF方法时传入这个变量;
3)或者上面的这两种方法都可以在你要嵌入的Flash文件地址后面加上问号传递 入:"xxx.swf?name1=hello&name2=world ";
2.JS调用Flash的方法,用参数传递信息给Flash或者得到Flash方法的返回信息
Flash对象.flash方法名字(参数1,参数2, …);
如:
var flashObj = getFlashFun(“flashID”);
var value = flashObj.flashFunName(args);
注意:
1.参数个数必须跟Flash里面的参数个数一致
2.非同域下需要得到Flash内部的允许 Security.allowDomain(… domains)
3.Flash调用js方法得到js方法的返回信息 或 通过参数传递信息给JS
ExternalInterface.call(js的函数名称, ”参数1”, ”参数2”, …);
如:
var value:String = ExternalInterface.call(“jsFunName“, ”argument1”, ”argument2”);
注意非同域下设置 param 标签的 allowScriptAccess 属性的 value值为 always,如:
var params = {
allowScriptAccess: "always"
};
或:
<param name="allowScriptAccess" value="always" />