构建AS与JS的通信

构建AS与JS通信要用到ExternalInterface类,我们先来看一下他的介绍,ExternalInterface 类是外部 API,这是一个在 ActionScript 和 Flash Player 容器之间实现直接通信的应用程序编程接口,例如,包含 JavaScript 的 HTML 页。Adobe 建议使用 ExternalInterface 实现 JavaScript 与 ActionScript 之间的所有通信。 具体怎么进行互相访问,我在这里提供一个例子来做说明: flex端的代码:
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*" layout="absolute" initialize="init()">
 3  <mx:Script>
 4   <![CDATA[
 5    import flash.external.ExternalInterface;
 6    import mx.controls.Alert;
 7    //这里我们注册两个方法,一个是供AS调用JS
 8    //一个是供JS调用AS
 9    public function init():void
10    {
11     ExternalInterface.addCallback("jsAlertText",asAlertText);
12    }
13    public function jsTest():void
14    {
15     //call定义调用JS的方法及参数
16     ExternalInterface.call("jsAlertTest",jsTestText.text);
17    }
18    public function asAlertText(str:String):void
19    {
20     Alert.show(str,"test");
21    }
22    
23   ]]>
24  </mx:Script> 
25  <mx:Button x="58" y="43" label="Button" click="jsTest()"/>
26  <mx:TextInput x="58" y="105" id="jsTestText"/>
27 </mx:Application>

 

在这里,我们注册了两个方法,(注意函数名.我命名可能有些随便,大家将就的看吧!).把他编绎好后,在bin-debug里面找到些SWF文件和相应的HTML文件,在HTML中加入如下代码:

 

 1 <body scroll="no">
 2 <script language="javascript">
 3 function jsAlertTest(str)
 4 {
 5  alert(str);
 6 }
 7 function asAlertTest()
 8 {
 9  thisMovie('test').jsAlertText(document.getElementById('asTestText').value);
10 }
11 function thisMovie(movieName) 
12 {
13   if (navigator.appName.indexOf("Microsoft"!= -1) {
14    return window[movieName];
15   } else {
16    return document[movieName];
17   }
18  }
19 </script>
20 <button onClick="asAlertTest()">JS调用AS方法</button>
21 <input type="text" id="asTestText" />

 

 

这样大家可以测试一下,付上我测试的结果
 
 
 

posted on 2009-12-07 23:58  骑驴睡觉  阅读(901)  评论(0编辑  收藏  举报

导航