ActionScript提供了一个外部API,那就是ExternalInterface 类,通过ExternalInterface类可以实现ActionScript 和 Flash Player 容器之间的直接通信。
一、在JavaScript中调用ActionScript方法
在 Flash Player 中,可以使用 HTML 页中的JavaScript来调用 ActionScript 函数。 ActionScript 函数可以返回一个值,JavaScript 会立即接收它作为该调用的返回值。
1. 在ActionScript 中调用addCallback()把ActionScript 方法注册为可从容器调用。 成功调用 addCallBack()
后,容器中的 JavaScript 或 ActiveX 代码可以调用在 Flash Player 中注册的函数。
addCallBack
定义如下:
addCallback(functionName:String, closure:Function):void
functionName
参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地方法,这个参数可以是一个方法也可以是对象实例。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute" initialize="this.initApp()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.external. ExternalInterface;
public function sayHelloWorld(name:String):String {
var msg:String=name+",hello world!";
Alert.show(msg);
return msg;
}
public function initApp():void {
ExternalInterface.addCallback("sayHelloWorld",
sayHelloWorld);
Alert.show("init");
}
]]>
</mx:Script>
</mx:Application>
2. 那么在Html页面中,先获得SWF对象的引用,也就是用<object .../>声明的Swf的对象,比如说是testJs。然后就可以用以下方式调用ActionScript中的方法。
function callActionScript() {
alert(document.getElementById("testJs").sayHelloWorld("奎跃翔"));
}
二、 在ActionScript中调用 JavaScript
在ActionScript中调用JavaScript最简单的方法是使用ExternalInterface(),可以使用此API调用任意JavaScript,传递参数,获得返回值,如果调用失败,ActionScript抛出一个异常。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.external. ExternalInterface;
public function callJavaScript():void {
Alert.show(ExternalInterface.call("sayHelloWorld",
"奎跃翔"));
}
]]>
</mx:Script>
<mx:Button x="290" y="10" label="Button"
click="callJavaScript()"/>
</mx:Application>
Html页面中有如下函数定义:
function sayHelloWorld(name) {
var msg=name+”,hello world!”
alert(msg);
return msg;
}