我想序列化&反序列化Vector。使用的ByteArray 这里是我的代码:AS3:无法从ByteArray反序列化对象..错误#2006
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()提前
我dipertly寻找一个解决方案..
感谢 长Sameer
错误#2006仍然存在,奇怪的是,只有当实现序列化的SWF被加载到另一个SWF(加载程序)时才会出现问题。但是,当我直接使用序列化器SWF(不从装载机瑞士法郎)的问题消失! 我叫desrialzer当我按下一个按钮,这意味着我可以肯定的是,串行SWF被完全地加载 我反序列化存储在加载的SWF中的字符串.. 所以100%,我希望这给你一个线索.. – 2010-02-11 05:39:49
我不知道为什么它可能会失败,对不起。也许Base64导致问题?一个高度使用的内建类(ByteArray)似乎不太可能具有如此巨大的错误。然后再次,也许这个错误只发生在您的应用程序特有的情况下,或者是由其他地方的无关代码引起的。我曾经在一个完全无关的课堂上发现了一个错误,导致了一个错误。这很难找到,因为在开始导致错误之前的几天,bug类已经正常工作(当它不应该是这样)时(并且我没有修改有问题的类几天)。 – Cameron 2010-02-12 20:58:03