[英]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.