JunXiu

          flex和javascript互相調用

          一、在JavaScript中調用Flex方法
          在Flex中可以用ExternalInterface來調用Flex的方法,途徑是通過在Flex應用可調用方法列表中添加指定的公用方法。在Flex應用中通過調用addCallback()可以把一個方法添加到此列表中。addCallback將一個ActionScript的方法注冊為一個JavaScript和VBScript可以調用的方法。
          addCallback()函數的定義如下:
          addCallback(function_name:String, closure:Function):void
          function_name參數就是在Html頁面中腳本調用的方法名。closure參數是要調用的本地方法,這個參數可以是一個方法也可以是對象實例。

          舉個例子:
          <mx:Script>
              import flash.external.*;
              public function myFunc():Number {
                  return 42;
              }
              public function initApp():void {
                  ExternalInterface.addCallback("myFlexFunction",myFunc);
              }
          </mx:Script>
          那么在Html頁面中,先獲得SWF對象的引用,也就是用<object .../>聲明的Swf的Id屬性,比如說是MyFlexApp。然后就可以用以下方式調用Flex中的方法。
          <SCRIPT language='JavaScript' charset='utf-8'>
              function callApp() {
                  var x = MyFlexApp.myFlexFunction();
                  alert(x);
              }
          </SCRIPT>
          <button onclick="callApp()">Call App</button>



          二、在Flex中調用 JavaScript
          你可以調用Html頁面中的JavaScript,通過與JavaScript的交互,可以改變Style,調用遠程方法。還可以將數據傳遞給Html頁面,處理后再返回給Flex,完成這樣的功能主要有兩種方法:ExternalInterface()和navigateToUrl()。
          在Flex中調用JavaScript最簡單的方法是使用ExternalInterface(),可以使用此API調用任意JavaScript,傳遞參數,獲得返回值,如果調用失敗,Flex拋出一個異常。
          ExternalInterface封裝了對瀏覽器支持的檢查,可以用available屬性來查看。
          ExternalInterface的使用非常簡單,語法如下:
          flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
          參數function_name是要調用的JavaScript的函數名,后面的參數是JavaScript需要的參數。
          舉個例子說明如何調用JavaScript函數
          Flex應用中,添加如下方法:
          <mx:Script>
          <?xml version="1.0" encoding="iso-8859-1"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
              <mx:Script>
                  import flash.external.*;
              
                  public function callWrapper():void {
                      var f:String = "changeDocumentTitle";
                      var m:String = ExternalInterface.call(f,"New Title");
                      trace(m);
                  }
              </mx:Script>
              <mx:Button label="Change Document Title" click="callWrapper()"/>
          </mx:Application>
          Html頁面中有如下函數定義:
          <SCRIPT LANGUAGE="JavaScript">
              function changeDocumentTitle(a) {
                  window.document.title=a;
                  return "successful";
              }
          </SCRIPT>

          轉載地址:http://unixboy.javaeye.com/blog/506843

          posted on 2010-08-15 22:24 junlin 閱讀(992) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 工布江达县| 柘城县| 阿坝| 泗阳县| 宜丰县| 安阳县| 凉城县| 棋牌| 安化县| 巩留县| 长治市| 城市| 新沂市| 韶关市| 陕西省| 宁南县| 探索| 永济市| 河北省| 子长县| 浦县| 五大连池市| 察雅县| 内黄县| 基隆市| 革吉县| 丹阳市| 常德市| 益阳市| 隆林| 临湘市| 盐源县| 建平县| 万盛区| 达日县| 岑溪市| 乐业县| 平果县| 重庆市| 阿坝县| 通州区|