Actionscript 3 读取Javascript外部接口调用时ByteArray类型强制失败

Actionscript 3 读取Javascript外部接口调用时ByteArray类型强制失败,actionscript-3,actionscript,Actionscript 3,Actionscript,我正在从一个ExternalInterface调用读取一个ByteArray对象,该调用正在从另一个SWF获取ByteArray。之所以使用Javascript管道,是因为ByteArray数据超过了LocalConnection类的40k限制 我得到以下错误: 类型错误:错误#1034:类型强制失败:无法转换Object@d6f48e1到flash.utils.ByteArray。 使用这行代码: swfBytes = ExternalInterface.call("getBytes", ca

我正在从一个
ExternalInterface
调用读取一个ByteArray对象,该调用正在从另一个
SWF
获取
ByteArray
。之所以使用
Javascript
管道,是因为
ByteArray
数据超过了
LocalConnection类的
40k
限制

我得到以下错误:

类型错误
错误#1034:类型强制失败:无法转换Object@d6f48e1到flash.utils.ByteArray。

使用这行代码:

swfBytes = ExternalInterface.call("getBytes", cacheIdx);
swfBytes是一个初始化的ByteArray对象。我确信对getBytes()的调用返回的是一个ByteArray对象,因为如果我运行以下代码行,就会得到传递的字节数

ExternalInterface.call("getBytes", cacheIdx).bytesAvailable;

非常感谢您的帮助。

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

您是否100%确定这是因为限制?如果没有-测试它。如果是的话,我想你应该已经知道答案了——你没有太多的选择,但是要将对象分割成更小的垃圾:)即使不将其写入BA,也没有多少选项可以检查大小。它是否足够简单,以便您可以拆分它?好问题!:)为了将其保持在40k限制内,您可以将40k长度的字节读取到接收SWF中,并继续附加(连接)到现有的字节数组中,基本上将其建立在40k块中,直到可以使用为止。为此,您需要一个
While
循环和一个
position\u counter++
来不断增加源SWF字节中的读取位置