一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

flash AS与JavaScript交互实例程序

时间:2022-06-28 22:13:02 编辑:袖梨 来源:一聚教程网

ActionScript调用javaScript

需要引入flash.external.ExternalInterface,这里要用到ExternalInterface类的call方法:

ExternalInterface.call(functionName:String,…arguments):*,fuctionName:

要调用的Javascript函数名,arguments:参数,可选。

调用由 Flash Player 容器公开的函数,传递零个或多个参数。如果所需的函数不可用,则调用返回 null;否则,它返回由该函数提供的值。不允许使用递归;递归调用会生成 null 响应。

如果容器是 HTML 页,则此方法在

如果该容器是其它某个 ActiveX 容器,则此方法会使用指定的名称广播事件,并且该容器会处理该事件。

如果该容器承载 Netscape 插件,您可以写入对新 NPRuntime 接口的自定义支持或嵌入 HTML 控件以及在 HTML 控件内嵌入 Flash Player。如果嵌入 HTML 控件,就可以通过与本机容器应用程序通迅的 JavaScript 接口与 Flash Player 进行通讯。

JavaScript调用ActionScript


需要引入flash.external.ExternalInterface,这要用到ExternalInterface类的addCallback方法:

ExternalInterface.addCallback( functionName:String, closure:Function):void,functionName:

要注册的函数名,closure:对应的执行函数。

ActionScript 方法注册为可从容器调用,成功调用 addCallBack() 后,容器中的 JavaScript 或 ActiveX 代码可以调用在 Flash Player 中注册的函数。

在包含 SWF 文件的 HTML 页中,在该文件的 object 标签中设置参数:

代码如下 复制代码

Access" value="always" />

在 SWF 文件中,添加以下 ActionScript:

flash.system.Security.allowDomain(sourceDomain )

这2个说明为了解决安全沙箱的问题,但是实际使用中,我们常常还会遇到更加头疼的问题。

具体实例

Interactive.fla

新建 fla 文件,舞台大小为300*80,颜色为#CCCCCC,类指定为Interactive;
位置(10,15)处添加260*22大小的Label label;
位置(10,50)处添加170*22大小的TextInput textInput;
位置(190,50)处添加100*22大小的Button button。

代码如下 复制代码







type="application/x-shockwave-flash" width="300" height="80">







function jsMethod(arg) {
alert("as 调用 js 成功,参数为:" + arg);
return ("as 调用 js 成功!");
}

function callAs() {
var myFlexfun = document.getElementById("asFunction");
var result = myFlexfun.callAs(jsInput.value);
alert("返回值:" + result);
}

package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.external.ExternalInterface;
public class Interactive extends Sprite
{
public function Interactive()
{
init();
}
private function init():void
{
// 将方法 asMethod 注册为可从容器调用
ExternalInterface.addCallback("callAs",asMethod);
button.addEventListener(MouseEvent.CLICK,buttonClick);
}
private function buttonClick(event:MouseEvent):void
{
trace(textInput.text);
label.text = "as 调用 js ...";
var result:String = callJS(textInput.text);
label.text = "返回值:" + result;
}
// ActionScript 调用 JavaScript;
private function callJS(arg:String):String
{
// 调用指定的 JavaScript 端的函数,并顺序指定传递给 JavaScript 端函数的参数
return ExternalInterface.call("jsMethod",arg);
}
// JavaScript 调用 ActionScript 时,ActionScript 端的函数;
private function asMethod(arg:String):String
{
label.text = arg;
return "js 调用了 as 成功!";
}
}
}

热门栏目