Flex与JavaScript交互

     ExternalInterface 实现 JavaScript 与 ActionScript 之间的所有通信,ExternalInterface 类是外部 API,这是一个在 ActionScript 和 Flash Player 容器之间实现直接通信的应用程序编程接口。在 Flash Player 中,可以使用 HTML 页中的 JavaScript 来调用 ActionScript 函数。ActionScript 函数可以返回一个值,JavaScript 会立即接收它作为该调用的返回值。

     利用ActionScript,使用call方法,可以在HTMl页上执行以下操作:

  • 调用任何 JavaScript 函数。
  • 传递任意数量、具有任意名称的参数。
  • 传递各种数据类型(Boolean、Number、String 等等)。
  • 接收来自 JavaScript 函数的返回值。

    通过在 HTML 页上使用 JavaScript,使用addCallback方法,可以:

  • 调用 ActionScript 函数。
  • 使用标准的函数调用表示法传递参数。
  • 将值返回给 JavaScript 函数。

注意在将 SWF 文件嵌入到 HTML 页中时,请确保 objectembed 标签的 idname 属性不包含以下字符: . - + * / \

 

简单示例:

 1:  <script language="JavaScript" type="text/javascript">
 2:  function callFlexFunction() {   
 3:      var x = document.getElementById("JavaScriptTest").flexTest("string from js.");   
 4:      alert(x);   
 5:  }
 6:   
 7:  function jsTest(param) {   
 8:      alert(param);   
 9:      return "Return from js:" + param;   
10:  }  
11:  </script>

 

 1:  <?xml version="1.0" encoding="utf-8"?>
 2:  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="intiApp()"
 3:       width="400" height="200">
 4:      <mx:Script>
 5:          <![CDATA[
 6:              import mx.controls.Alert;
 7:   
 8:              public function flexTest(param:String):String
 9:              {
10:                  Alert.show("Input param:"+param);
11:                  return "Return from Flex:"+param;
12:              }
13:   
14:              public function intiApp():void
15:              {
16:                  ExternalInterface.addCallback("flexTest", flexTest);  
17:              }
18:   
19:              public function callJS():void {   
20:                  var s:String = ExternalInterface.call("jsTest", "Flex");   
21:                  Alert.show(s);   
22:              }   
23:          ]]>
24:      </mx:Script>
25:      
26:      <mx:Button x="52" y="58" label="call javascript" click="callJS()"/>
27:  </mx:Application>
28:  

点击页面按钮:

image

点击Flash内按钮

image

posted @ 2010-09-03 01:48  Asharp  阅读(8499)  评论(1编辑  收藏  举报