[AS3]as3与js通信源代码
AS与JS通信,官方帮助文档已经说的比较明白了。做什么事,都要得准备好。想要JS调用AS里边的函数,AS这边必须满足两个条件。第一,swf必须已经加载完毕了。第二,AS这边必须注册为可被容器调用。
- if(ExternalInterface.available)
- {
- ExternalInterface.addCallback("receiveMes",asReceiveMes);
- ExternalInterface.addCallback("backMes",jsBackMes);
- }
if 语句,判断此播放器是否位于提供外部接口的容器中。 如果外部接口可用,则此属性为 true
;否则,为 false
。addCallback方法就是注册该swf可被容器调用。它有两个参数,都是函数名。前边一个函数名,用引号引起来,表示JS那边对应AS这边的
函数名。后边一个函数名,是AS这边响应的函数名。这两个函数名,可以相同,也可以不同。看个人理解需要。
AS这边主动调用JS里边的函数,用call方法。call方法第一个参数为JS那边的函数名,是必须要的。你也可以选择传一个或多个参数过去。String,Number,int,Array,Boolean,Object等数据类型都可以互相传递。
- ExternalInterface.call("sendMes",_inputTxt.text);
主要是js那边的设置。其实就是包含js的Html代码。这里主要有两个标签要用到。一个是object,一个是embed。在object标 签里边有两个属性需要注意。allowScriptAccess属性默认是sameDomain。还有一个参数never和另一个参数aways。设置成 never
AS与JS之间就拒绝通信。设置成aways,不同域也可以访问。object里边还有一个属性是id。这个id与embed标签里边的name属 性对应。在embed标签里边也有allowScriptAccess属性。其实,object标签和embed标签里边的属性很多都相同。想让swf背 景透明就
将embed里边的wmode属性设置成"transparent"。
下边说下js代码。在js里边获取到swf的引用有两个方法。一个是用:
- function getSwf(movieName)
- {
- if (navigator.appName.indexOf("Microsoft") != -1)
- {
- return window[movieName];
- }
- else
- {
- return document[movieName];
- }
- }
- getSwf("myFlash")
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例