【问题标题】:ByteArray Type Coercion failure when reading from Javascript ExternalInterface call从 Javascript ExternalInterface 调用读取时 ByteArray 类型强制失败
【发布时间】:2014-07-09 05:36:11
【问题描述】:

我正在从 ExternalInterface 调用中读取 ByteArray 对象,该调用正在从另一个 SWF 获取 ByteArrayJavascript 管道的原因是因为ByteArray 数据超出了LocalConnection class40k 限制。

我收到以下错误:

类型错误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


【解决方案1】:

谢谢!将数据分成 40k 块效果很好。现在我有另一个问题,即无法正确关闭和重用连接。另一个已回答的问题建议为每个连接使用唯一的连接字符串。

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 2011-09-26
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多