我想序列化&反序列化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