8

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

我目前正在从 Flash 内的“for each”循环中多次调用一个函数,但它的速度太快,JavaScript 无法跟上。

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

谢谢,乔什

4

3 回答 3

8

是的,这是可能的。

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

... arguments — 要传递给容器中函数的参数。您可以指定零个或多个参数,并用逗号分隔它们。它们可以是任何 ActionScript 数据类型。当调用 JavaScript 函数时,ActionScript 类型会自动转换为 JavaScript 类型;当调用某个其他 ActiveX 容器时,参数在请求消息中进行编码。

快速测试:

作为代码:

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

JS代码:

function jsTest(arg) {
    alert(arg);
}
于 2009-06-30T01:42:32.440 回答
7

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

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

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

于 2009-06-29T14:42:53.273 回答
6

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

于 2009-06-29T14:23:03.670 回答