ActionScript与JavaScript进行交互的方法

本文介绍如何使用ActionScript与JavaScript进行交互。通过ExternalInterface类,实现了ActionScript与Flash Player容器间的通信,包括从JavaScript调用ActionScript方法及从ActionScript调用JavaScript。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值