【发布时间】:2014-07-09 05:36:11
【问题描述】:
我正在从 ExternalInterface 调用中读取 ByteArray 对象,该调用正在从另一个 SWF 获取 ByteArray。 Javascript 管道的原因是因为ByteArray 数据超出了LocalConnection class 的40k 限制。
我收到以下错误:
类型错误:Error #1034: Type Coercion failed: cannot convert Object@d6f48e1 to flash.utils.ByteArray.
用这行代码:
swfBytes = ExternalInterface.call("getBytes", cacheIdx);
swfBytes 是一个初始化的 ByteArray 对象。我确信我对 getBytes() 的调用将返回一个 ByteArray 对象,因为如果我运行以下代码行,我会得到传递的字节数。
ExternalInterface.call("getBytes", cacheIdx).bytesAvailable;
非常感谢任何帮助。
【问题讨论】:
-
你100%确定是因为限制吗?如果没有 - 测试它。如果是,我想你应该已经知道答案了——你没有太多选择,只能将对象拆分成更小的垃圾:) 即使不将其写入 BA,也几乎没有检查大小的选项。它是否足够简单,您可以拆分它还是?很好的问题! :)
-
为了将其保持在 40k 限制内,您可以读取 40k 长度的字节到您的接收 SWF 并继续附加(连接)到那里的现有字节数组,基本上以 40k 块构建它,直到准备好采用。为此,您需要一个
While循环和一个position_counter++来不断增加源 SWF 字节中的读取位置
标签: actionscript-3 actionscript