当前位置: 移动技术网 > IT编程>UI设计>设计软件 > AS3与JS之间的简单自定义参数通讯

AS3与JS之间的简单自定义参数通讯

2019年03月20日  | 移动技术网IT编程  | 我要评论
一直没去深入研究下as3与js的交互开发也就是swf在html中的通信,最近出于项目要求被迫投入了,也在这里做个汇总.
一:html中最快速的传值方式
在html中插swf时,可以跟个参数,比如:
files/home.swf?id=”21′
在as3里可以这样去接收
var id:string=stage.loaderinfo.parameters["id"]; 这种传值方式其实as2的时候也是这样做的,到as3时使用parameters 属性替换了as1.0 和2.0 提供swf文件参数作为主时间轴的技术,所以我们改用一下as3的取值方式就行了.
这种方式只能是单边一次性传值,有时候会用得到,但需要与js相互通信就不行了,还有,只能接收字符串.
二:使用外部通信接口externalinterface
这也是as2时代进化来的,目前公认的最靠谱的通信方式.
使用方法:
1.js调用as3的函数
确定js调用as3之前,要在as3中绑定调用函数,也就是说,只有as3答应给的方法js才能调用.
使用:externalinterface.addcallback(functionname:string, closure:function):void有两个参数:
functionname:string — 容器可用于调用函数的名称。
closure:function — 要调用的 closure 函数。 这可能是一个独立的函数,或者可能是引用对象实例方法的 closure 方法。通过传递 closure 方法,回调实际上可以定向到特定对象实例的方法。
复制代码代码如下: externalinterface.addcallback("getasvars",getasfun); private function getasfun(value:string):void { //得到js传来的值:value }好了,可以在js中去调用这个方法了,调用前还要先取得插进html的swf的id,我们在html中不管用什么方式插都可以设置id 例如先通过id为”mov”来获取对象,再调用上面绑定的方法:
复制代码代码如下:function thismovie(moviename) { if (navigator.appname.indexof("microsoft") != -1) { return window[moviename]; } else { return document[moviename]; } } thismovie("mov").getasvars(value); 2.as3调用js的函数as3调js直接使用call就行了 使用:externalinterface.call(functionname:string, … arguments):* 这个方法有两个参数: functionname:string — 要在容器中调用的函数的名称。 … arguments — 传递到容器中的函数的参数。 您可以指定零个或多个参数,参数之间用逗号分隔。 这些参数可以是任何 actionscript 数据类型。 当调用 javascript 函数时,actionscript 类型自动封装到 javascript 类型中;当调用其它某个 activex 容器时,将在请求消息中对参数进行编码。 例如:
复制代码代码如下:externalinterface.call("settojs","paramtest"); //在js中编写这个settojs的函数 function sentojs(value){ alert(value)//输出:paramtest }看起来很爽,但也不是完全靠谱,这个接口还是会挑食的,只有在以下浏览器中才支持: 浏览器 操作系统 操作系统 internet explorer 5.0 及更高版本 windows netscape 8.0 及更高版本 windows macintosh mozilla 1.7.5 及更高版本 windows macintosh firefox 1.0 及更高版本 windows macintosh safari 1.3 及更高版本 macintosh 还有个安全沙箱的问题,如果出现安全沙箱警报,可以使用以下两种修正方法: 1.在包含 html 页中的 swf 文件的 object 标签中,设置以下参数: 2.在 swf 文件中,添加以下 actionscript:
复制代码代码如下:flash.system.security.allowdomain(sourcedomain)

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网