天天看點

Flash/Flex學習筆記(9):ActionScript3.0與Javascript的互相調用

原理跟Silverlight中的幾乎如出一轍(見Silverlight如何與JS互相調用):

ActionScript3代碼:

btnCallJs.addEventListener(MouseEvent.CLICK,fnCallJs);

function fnCallJs(e:MouseEvent):void {
  trace("準備調用...");
  //調用js中的JsHello方法,并将傳回值顯示到Label中
  lblResult.text=ExternalInterface.call("JsHello","AS3傳遞的參數");
}

function CalledByJs(p:String):String {
  return "Flash中的CalledByJs被調用了,這是js中傳過來的參數:" + p;
}

ExternalInterface.addCallback("MyFunction",CalledByJs);//這裡:MyFunction就是暴露給js調用的方法名稱      

嵌入flash的頁面中這樣處理:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ... id="Js_AS3" >
  ... </object>


<script type="text/javascript">
function JsHello(msg){
  var r = "這是js中的方法,參數:" + msg;
  alert(r);
  return r;
}

function fnCallAs(msg){
  var flashObj = document.getElementById("Js_AS3"); 
  var sAsReturn = flashObj.MyFunction("js中的參數");
  alert(sAsReturn);
}

fnCallAs("test");

</script>      

作者:菩提樹下的楊過

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀