原理跟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>
作者:菩提樹下的楊過
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。