将数组从 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的主要内容,如果未能解决你的问题,请参考以下文章
用flash as3语言如何将影片剪辑存入一个数组以及如何访问?