1. 程式人生 > >flex與html互動和js呼叫

flex與html互動和js呼叫

一、在JavaScript中呼叫Flex方法
在 Flex 應用中,需要在方法列表中新增指定的公用方法,這樣Flex中的方法才能被JS呼叫到。在Flex中需要通過呼叫addCallback()可以把一個方 法新增到此列表中。 addCallback將一個ActionScript的方法註冊為一個JavaScript和VBScript可以呼叫的方法。
addCallback()函式的定義如下:
addCallback(function_name:String, closure:Function):void
function_name引數就是在Html頁面中指令碼呼叫的方法名。closure引數是要呼叫的本地方法,這個引數可以是一個方法也可以是物件例項。


舉個例子:

01. <mx:script> 02. import flash.external.*; 03. public function myFunc():Number { 04. return 83; 05. } 06. public function initApp():void { 07. ExternalInterface.addCallback( "myFlexFunction" ,myFunc); 08. } 09. </mx:script>
那麼在Html頁面中,先獲得SWF物件的引用,也就是用 1.
< object ...id = "MyFlexApp" ></ object > 宣告的Swf的Id屬性,比如說是MyFlexApp。然後就可以用以下方式呼叫Flex中的方法。
1. <script language= "JavaScript" > 2. function callApp() { 3. var x = MyFlexApp.myFlexFunction(); 4. alert(x); 5. } 6. </script>

1. < input onclick
= "callApp()" value = "Test" type = "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應用中,新增如下方法:
01. <mx:script> 02. 04. <mx:script> 05. import flash.external.*; 06. 07. public function callWrapper():void { 08. var f:String = "changeDocumentTitle" ; 09. var m:String = ExternalInterface.call(f, "New Title" ); 10. trace(m); 11. } 12. </mx:script> 13. <mx:button label= "Change Document Title" click= "callWrapper()" > 14. </mx:button></mx:application></mx:script>

Html頁面中有如下函式定義:
1. <script language= "JavaScript" > 2. function changeDocumentTitle(a){ 3. window.document.title = a; 4. return "successful" ; 5. } 6. </script>