flex與js相互調用

1.flex調用js方法

調用方法例如:ExternalInterface.call("UploadComplete",oldName,uidName,_dir+"/"+uidName+type);html

第一個是js方法名,後面幾個是給這個js方法傳的參數。這個方法必須在網頁的js中註冊,不然會調用失敗。ajax

須要注意的是調用以前須要檢查網頁的js是否已完成加載,用ExternalInterface.available但是判斷。瀏覽器

注:這種調用方法是能夠有返回值的,例如:var m:String = ExternalInterface.call(f,"New Title");app

      可是這個返回值不能有時延(例如js須要進行ajax操做),不然m=null。由於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>

 

2.js調用flex方法 函數

js要調用flex方法,首先在flex中必須註冊,將as方法註冊爲js可調用的方法。例如:ExternalInterface.addCallback("ConfirmGroup",ConfirmGroup);flex

第一個是js中調用時用的名稱,第二個是as中定義的方法。ui

在ie瀏覽器中調用方法爲: document.getElementById("mapContent").ConfirmGroup(1); xml

mapContent爲flash的id。htm

注:它也是能夠有返回值的。

示例:

AS:

 

<mx:Script>
    import flash.external.*;
    public function myFunc():Number {
        return 42;
    }
    public function initApp():void {
        ExternalInterface.addCallback("myFlexFunction",myFunc);
    }
</mx:Script> 

 

JS:

<SCRIPT language='JavaScript' charset='utf-8'>
    function callApp() {
        var x = MyFlexApp.myFlexFunction();
        alert(x);
    }
</SCRIPT>
<button onclick="callApp()">Call App</button>

轉:http://www.cnblogs.com/tiandi/archive/2012/06/03/2532977.html

相關文章
相關標籤/搜索