2

情况:我正在尝试用 javascript 替换 Flash Socket 通信(字节范围),以避免 Flash 套接字安全策略文件限制。

详细信息:我有来自 javascript 的二进制数据,我可以通过 base64 编码/解码将其传递到闪存,但这太慢了。保存到磁盘并传递本地 url 不是一种选择(不仅是为了速度,而且客户端更喜欢内存中的所有内容,并且 swf 文件可能会被限制加载本地文件)。此外,不使用 base64 是行不通的,因为 flash 的 ExternalInterface 使用 XML(不是为承载二进制数据而设计的)将数据传递给 AS3。

问题:有没有什么方法可以在不写入磁盘而不是 bae64 编码的情况下从 JS 获取二进制数据到 AS3?

我知道动作消息格式(AMF),但它似乎增加了许多外部依赖项,并且可能仍然很慢?

注意:我的程序需要尽可能与浏览器兼容,并且它是由客户端下载的(因此需要很小),并且它还需要尽可能快地运行......

谢谢!

4

1 回答 1

1

我已经稍微修改了我对这个问题的想法:

没有直接的方法可以在 Flash 和 Javascript 之间发送二进制数据而不首先将其编组为基于文本的格式(即:base64 编码)。

正如 OP 所指出的,为了促进 Actionscript 和 Javascript 之间的通信,ExternalInterface 该类实际上将对象/数据编组为 XML 格式。因此,二进制数据需要通过这种转换为 XML。

新想法:当您使用ExternalInterfaceFlash 应用程序时,实际上会修改 DOM,添加将数据序列化/反序列化到 XML 的方法(需要参考,我已经阅读过但现在找不到)。从技术上讲,可以在 Javascript 中重新定义这些方法,并修复您在尝试传递二进制数据时看到的 XML 解析错误。您必须确定这些方法的名称(我记得它们以__Flash__或类似的开头)。

于 2012-08-04T18:34:45.043 回答