0
我想要做的事:AS3系列化
在工具欄,拖動 - 具備對象和dropable到一個影片剪輯(他們則成爲影片剪輯的孩子)。一旦完成,我希望能夠序列化這個對象,所以我可以將它保存到一個文件中。然後,我可以重新加載這個文件,並繼續拖/放這個動畫片段的東西。
我如何做:
public class Serialization {
public static function serializeToString(value:Object):String{
if(value==null){
trace("null isn't a legal serialization candidate");
}
var bytes:ByteArray = new ByteArray();
bytes.writeObject(value);
bytes.position = 0;
var be:Base64Encoder = new Base64Encoder();
be.encode(bytes.readUTFBytes(bytes.length));
return be.drain();
}
public static function readObjectFromStringBytes(value:String):Object{
var dec:Base64Decoder=new Base64Decoder();
dec.decode(value);
var result:ByteArray=dec.drain();
result.position=0;
return result.readObject();
}
}
這是調用函數/其寫入文件:
var fr:FileReference = new FileReference;
fr.addEventListener(Event.COMPLETE, success);
var txtString:String = new String();
txtString = save.Serialization.serializeToString(pagePic);
trace(txtString);
fr.save(txtString, "test.txt");
不幸的是,txtString顯示爲空白。我接近這個錯誤嗎?
附註: 這是爲移動平臺而開發的。
我有點困惑。 drain()不是Base63Encoder類中記載的方法:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/utils/Base64Encoder.html – JeffryHouser
我在印象之外簡單地引用了drain將編碼的字節更改爲字符串。 – nameistaken1
爲什麼你不使用AMF序列化和序列化對象本身? bytes.writeObject(值); – turbosqel