flex與js交互淺析


1.flex調用js方法

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

第一個是js方法名,后面幾個是給這個js方法傳的參數。這個方法必須在網頁的js中注冊,否則會調用失敗。

需要注意的是調用之前需要檢查網頁的js是否已完成加載,用ExternalInterface.available可是判斷。

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

      但是這個返回值不能有時延(例如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);

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

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

mapContent為flash的id。

 注:它也是可以有返回值的。

示例:

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>

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM