将数组从 Flash (AS3) 发送到 JavaScript

Posted

技术标签:

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

是否可以使用 ExternalInterface 调用?

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

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

谢谢, 乔什

【问题讨论】:

刚刚发现这可能会导致我的问题scottgmorgan.com/blog/index.php/tag/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 中的字符串中?

以上是关于将数组从 Flash (AS3) 发送到 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有图像的字节数组从 AS3 发送到 PHP?

将字符串从 php 传递到 flash

用flash as3语言如何将影片剪辑存入一个数组以及如何访问?

如何从Cheat Engine保护Flash游戏?

Flash AS3 - 当数组已经调用时,下一步我应该怎么做?

从 AS3 文件动态添加 Flash 组件到舞台