ActionScript与JavaScript进行交互的方法

本文介绍如何使用ActionScript与JavaScript进行交互。通过ExternalInterface类,实现了ActionScript与Flash Player容器间的通信,包括从JavaScript调用ActionScript方法及从ActionScript调用JavaScript。
摘要由CSDN通过智能技术生成

 

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、付费专栏及课程。

余额充值