ActionScript与JavaScript双向交互实现详解
本文介绍ActionScript与JavaScript之间的双向通信机制。通过ExternalInterface类,AS可调用JS函数并获取返回值,JS也可注册回调方法供AS调用。文章提供完整的MXML代码示例及HTML/JS配合代码,展示如何配置事件监听、声明可调用方法及处理参数传递,适用于Flash与Web页面的集成开发场景。
ActionScript调用JavaScript的实现
具体实现代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import flash.external.ExternalInterface;
public function invokeJavaScript():void
{
lblResult.text=ExternalInterface.call("returnTheName",txtName.text);
}
]]>
</mx:Script>
<mx:Panel width="800" height="600" title="ActionScript调用JavaScript" verticalCenter="0" horizontalCenter="0">
<mx:TextInput id="txtName" text="[请输入名字]"/>
<mx:Button id="btnConnect" label="确定" click="invokeJavaScript()" x="229" y="204"/>
<mx:Label id="lblResult" text="test" x="205" y="99" width="150" height="80"/>
</mx:Panel>
</mx:Application> 在HTML页面的JavaScript代码中,需要定义一个名为returnTheName的函数,该函数接收一个参数并返回拼接后的字符串,例如:function returnTheName(a){return "success! "+a};
上述代码展示了ActionScript如何调用JavaScript中的方法。
JavaScript调用ActionScript的实现
接下来介绍JavaScript如何调用ActionScript中的方法。
相关代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" layout="absolute">
<mx:Script>
<![CDATA[
import flash.external.ExternalInterface;
private function init():void
{
ExternalInterface.addCallback("addTo100",add);//声明可以被调用的方法
}
private function add():int
{
var i:int;
var sum:int=0;
for(i=1 ; i<100 ; i++)
{
sum+= i;
}
return sum;
}
]]>
</mx:Script>
</mx:Application> 在HTML页面中添加一个按钮,用于触发JavaScript调用:<button onclick="addMethod()">点击调用</button>
在JavaScript文件中定义addMethod函数,通过JavaScriptCallActionScript.addTo100()调用AS中的方法,并弹出结果:function addMethod{var s= JavaScriptCallActionScript.addTo100();alert(s;}
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
