[AS3]使用ExternalInterface让JS与As交互通讯
ExternalInterface里一共就包含两个方法call和addCallback
基本结构
- import flash.external.ExternalInterface;
- 按钮名.addEventListener(MouseEvent.CLICK,onClick);
- function onClick(evt:MouseEvent){
- ExternalInterface.call("gotoLogin");
- }
1、call---ActionScript调用JavaScript的方法
1.1 不带参数的情况
JavaScript:function Show() { alert("I am a func!");}
ActionScript://直接用一条语句调用ExternalInterface.call("Show");
1.2 带参数的情况
JavaScript:function Show(message) { alert(message);}
ActionScript:ExternalInterface.call("Show","I am a message from AS");
1.3 另外也可以用getURL方法调用
getURL("javascript:show('i am a message from as)","_self");
2、addCallback---JavaScript调用ActionScript的方法
ExternalInterface.addCallback( functionName:String, closure:Function):void
functionName:要注册的函数名
closure:对应的执行函数
JS:
- function thisMovie(movieName){
- if(navigator.appName.indexOf("Microsoft") != -1){
- return window[movieName];
- }else{
- return document[movieName];
- }
- }
- function callAS1(){
- thisMovie("flash1").show("I am come from js program!");
- }
注意:上面flash1是flash媒体的ID,也可以使用swfobject方法中提到的div的ID;
注意:还是有安全沙箱问题
以上实现方法不适合本地协议,但是如果把应用布置在服务器上,通过HTTP协议访问应该是没问题的!
热门文章推荐
- [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示例