一、在JavaScript中呼叫Flex方法
在Flex中可以用ExternalInterface來呼叫Flex的方法,途徑是透過在Flex應用可呼叫方法清單中新增指定的公用方法。在Flex應用中透過呼叫addCallback()可以把一個方法加入到此列表中。 addCallback將一個ActionScript的方法註冊為一個JavaScript和VBScript可以呼叫的方法。
addCallback()函數的定義如下:
addCallback(function_name:String, closure:Function):void
function_name參數就是Html頁面中腳本呼叫的方法名稱。 closure參數是要呼叫的本地方法,這個參數可以是一個方法也可以是物件實例。
舉例:
<script><br> import flash.external.*;<br> public function myFunc():Number { ():void {<br> ExternalInterface.addCallback(" myFlexFunction",myFunc);<br> }<br></script>
那麼在Html頁面中,先獲得SWF物件的引用,也就是用宣告的Swf的Id屬性,比如說是MyFlexApp 。然後就可以用以下方式呼叫Flex中的方法。
二、在Flex中呼叫JavaScript
你可以呼叫Html頁面中的JavaScript,透過與JavaScript的交互,可以改變Style,呼叫遠端方法。也可以將資料傳遞給Html頁面,處理後再回傳給Flex,完成這樣的功能主要有兩種方法:ExternalInterface()和navigateToUrl()。
在Flex中呼叫JavaScript最簡單的方法是使用ExternalInterface(),可以使用此API呼叫任意JavaScript,傳遞參數,獲得回傳值,如果呼叫失敗,Flex拋出一個例外。
ExternalInterface的使用非常簡單,語法如下:
flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;參數function_name是要呼叫的JavaScript的函數名,後面的參數是JavaScript所需的參數。
舉例說明如何呼叫JavaScript函數
Flex應用中,加入以下方法:
<script><br><?xml version="1.0" encoding="iso-8859-1"?><br><application xmlns :mx="http://www.adobe.com/2006/mxml"><br> <script><br> import flash.external.*;<br> var f:String = " changeDocumentTitle";<br> var m:String = ExternalInterface.call(f,"New Title");<br> :Script><br> <button label="Change Document Title" click="callWrapper()"></button><br></script>
Html頁面中有下列函數定義: