Flex

Flex教學-Flex與Javascript相互傳值

梅干 2009/08/05
梅問題-flex教學-Flex與javascript相互溝通
  以前用Flash時,常透過Flash來呼叫網頁中的javscript函數,且方法相當的簡易,只要用getURL("javascript:xxx,就可直接相互的溝通使用,原本想說Flex發佈後也是swf,用法應該也是一樣,結果~殘念,不可將子用滴!於是梅干花了點時間,上網找了些資料,並實際測試終於搞懂了二者的溝通方式,並稍作整理製作成簡易的範例,各位若有需要時,不仿可以參考一下。

Flex呼叫Javascript:
FlexCallJS.mxml(script):
import flash.external.*; import mx.controls.Alert; public function javascriptAlert():void{ var javascriptFunction:String = "showAlert"; var message:String = messageText.text; if(ExternalInterface.available){ ExternalInterface.call(javascriptFunction, message); } }
FlexJS.html(script):

這邊需注意到,在mxml中:
javascriptFunction:String = "showAlert";為javascript中的function名稱,二者需相同。
message為參數內容,這邊可依需求自行設定。

範例預覽:


[範例下載]

※解壓密碼:minwt.com
Javascript呼叫Flex:
JSCallFlex.mxml(script):
import mx.controls.Alert; import flash.external.ExternalInterface; public function initApp():void{ if(ExternalInterface.available){ ExternalInterface.addCallback("alertshow", alertshow); } } public function alertshow(msg:String,msg2:String):void{ //mx.controls.Alert.show(msg); this.lb1.text=msg; this.lb2.text=msg2; }
JSCallFlex.html(script):

var attributes = {id:"JSCallFlex"};:要給swf一個id名稱。
getFlexApp('JSCallFlex').alertshow(msg,msg2);中的JSCallFlex為swf名稱內的函數叫alertshow,(msg,msg2)為接收的參數內容。
範例預覽:


[範例下載]

※解壓密碼:minwt.com
  先前的jQuery滑入播放影片,就是利用javascript去呼叫Flex中function,將檔案與尺寸大小丟給它,再進行播放滴!呵~很好玩吧!