【问题标题】:Send array from Flash (AS3) to JavaScript将数组从 Flash (AS3) 发送到 JavaScript
【发布时间】:2010-11-06 17:06:52
【问题描述】:

是否可以使用 ExternalInterface 调用将数组从 Flash (AS3) 发送到 JavaScript?

我目前在 Flash 中的“for each”循环中多次调用一个函数,但它的速度太快以至于 JavaScript 跟不上。

我的想法是创建一个属性数组,将其传递给 JavaScript 函数,然后在 JavaScript 中循环。

谢谢, 乔什

【问题讨论】:

标签: javascript flash actionscript-3 externalinterface


【解决方案1】:

是的,这是可能的。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html#call()

... arguments — 要传递的参数 到容器中的功能。你 可以指定零个或多个参数, 用逗号分隔它们。他们能 可以是任何 ActionScript 数据类型。什么时候 调用是一个 JavaScript 函数, ActionScript 类型是 自动转换成 JavaScript 类型;当电话是 其他一些 ActiveX 容器, 参数在请求中编码 消息。

快速测试:

AS 代码:

if(ExternalInterface.available) {
    ExternalInterface.call("jsTest", [0,1,"two",{a:1,b:2}]);
}

JS代码:

function jsTest(arg) {
    alert(arg);
}

【讨论】:

    【解决方案2】:

    除了使用 JSON 的建议之外,这对于小型数组应该更快,并且不需要使用 eval 或外部库来解析。在 flash 中加入这样的字符串中的数组:

    项目1|项目2|项目3|项目4

    将字符串传递给 JS 并使用 split("|") 再次拆分

    【讨论】:

    • 请确保您的数据永远不会包含分隔符!
    【解决方案3】:

    您总是可以创建一个 JSON 对象并将其传递给 JavaScript。

    【讨论】:

    • JSON 很好,有很多库可以在 Actionscript 和 Javascript 上使用。不过,在这种情况下,播放器会为您处理序列化,因此我将只使用本机 AS 对象。它更简单,现成可用并且可能更快。
    • 在接收到一个 json 对象时,如何将它存储在 flash 中的字符串中?
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多