as3 与js相互通信

1.as和js通讯实例
如果as3调用 JAVA script 中的函数直接在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 sendTo ActionScript (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)的后面必须单独写个函数,然后调用这个函数

你可能感兴趣的:(as3)