当前位置:编程学习 > JS >>

as3 与js相互通信

1.as和js通讯实例
如果as3调用JAVAscript 中的函数直接在as中添加
if (ExternalInterface.available) {
      ExternalInterface.call("sendToJavaScript",value);
     }
ExternalInterface.available主要判断播放器是否位于提供外部接口的容器中,如果swf在不在网页中, ExternalInterface.call向外部api传递参数
sendToJavaScript 就是js中的函数名(自定义) value 是你穿过来变量或值
结下来你可以试着在网页中添加一个
<script type="text/javascript">
function sendToJavaScript(value){
alert(value)
}
</script >这样flash中的value就会以alert弹出 这只是实现了第一步 ,当然做的时候建议用try抛出错误在测试

2.js和as通讯实例
在网页中写入
<script type="text/javascript">
   function thisMovie(movieName) {
         if (navigator.appName.indexOf("Microsoft") != -1) {
             return window[movieName];
         } else {
             return document[movieName];
         }
     }//判断浏览器

     function sendToActionScript(value) {
         thisMovie("flash动画名称").sendToActionScript(value);
     }
</script>
<form name="form1">
<input type="text" name="input" value="" />
<input type="button" value="Send" /><br />
   </form>
注意flash动画名称 包括网页中flash在objct 中id也必须是flash的名称 王成了网页接下来看as3

if (ExternalInterface.available) {
     try {
      ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript);
     } catch (e:Error) {
      trace(e.message)}
    } else {
trace("External interface is not available for this container.");
    }//End if

注意的是我们在做开发的时候可能直接在结束游戏过程中发送个请求掉用js js处理请求在返回个结果 这样其实flash读不出来 当然你可以做一个按钮请求 肯能as事件机制问题,
还有就是   thisMovie("flash动画名称").sendToActionScript(value); 不能写在上面的 sendToJavaScript(value)的后面必须单独写个函数,然后调用这个函数

 

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,