我正在尝试序列化&反序列化矢量。使用ByteArray 这是我的代码:
public static function serializeToString(value:Object):String{
if(value==null){
throw new Error("null isn't a legal serialization candidate");
}
var bytes:ByteArray = new ByteArray();
bytes.writeObject(value);
bytes.position = 0;
return Base64.encodeByteArray( bytes ).toString();
}
public static function readObjectFromStringBytes(value:String):Object{
var result:ByteArray= Base64.decodeToByteArray(value);
result.position=0;
return result.readObject();
}
无论我做什么,我都会遇到这个错误:
RangeError:错误#2006:提供的索引超出范围。 在flash.utils :: ByteArray / readObject()
我正在寻找解决方案..
提前致谢 萨米尔
答案 0 :(得分:1)
我在经历了几天的挫折后找到了问题原因。
为播放器9发布的加载器SWF,为播放器10发布的内容SWF, 我只是为播放器10重新发布了加载器,错误#2006从加载的SWF中消失了
我想知道的是,内容使用了Vector。类型,这是玩家10的特征, 为什么它在旧装载机内正确播放?!为什么没有关于不同播放器版本的描述?
答案 1 :(得分:0)
尝试摆脱.position = 0
行。它们不是必需的,第二个可能是导致您的问题的原因。另请注意,toString()
是不必要的,因为encodeByteArray
已经返回一个字符串。
答案 2 :(得分:0)
如果您想要将序列化对象图发送或接收到服务器端代码而不先转换为字符串,请参阅this link。