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)的后面必须单独写个函数,然后调用这个函数