簡體   English   中英

從AS3中的傳遞對象調用JS函數

[英]Calling JS function from passed object in AS3

我想從傳遞給Flash的對象中調用JS函數。

JS代碼:

 <script>
    function initContext() {
        flashMovie.setContext(ctx);
    }

    var ctx = new Object();
    ctx.saySomething = function(msg) {
        alert(msg);
    }   
</script>

AS3代碼:

if (ExternalInterface.available) {  
    ExternalInterface.addCallback("setContext", say);
    ExternalInterface.call("initContext");
}

因此,首先AS3調用JS initContext和JS initContext,然后調用帶有對象的setContext。 到目前為止,這有效。 我被困在如何從傳遞的對象中調用函數saySomething:

private function say(context:Object) {
    ExternalInterface.call(???);
}

您無法在傳遞給ActionScript的實際ctx對象上執行saySomething JavaScript函數,因為ActionScript無法在內部執行JavaScript。

在JavaScript和ActionScript之間發送對象時,會將其序列化/反序列化並將其從JavaScript對象轉換為ActionScript對象,反之亦然,但是saySomething函數/方法不會轉換為ActionScript函數。 可執行代碼不轉換。 基本類型(例如字符串,數字,布爾值,數組和對象)將被轉換,但不會轉換功能。

另外,ctx不會引用您在JavaScript中創建的對象,它將是對象的副本(序列化和反序列化)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM