0
我想將一個Sprite對象保存爲我正在使用的設備上的一個文件,它似乎可行。我遇到的問題是將保存的文件讀回並放回到舞臺上作爲精靈。下面是我到目前爲止的代碼,有人能告訴我我做錯了什麼嗎?由於文件大小低於千字節,我懷疑保存的文件不是我所期望的。AS3和Flash Builder 4.5.1中的對象數據類型
public function save_album(e:Event):void
{
var outFile:File = File.documentsDirectory; // dest folder is desktop
outFile = outFile.resolvePath("canvas3.bin");
var fs:FileStream = new FileStream();
var bytes:ByteArray = new ByteArray();
//trace (File.documentsDirectory.url + "/canvas2.bin");
fs.open(outFile, FileMode.WRITE);
bytes.writeObject(graffitiContainer) //graffitiContainer is a Sprite
bytes.position = 0;
fs.writeBytes(bytes, 0, bytes.length);
fs.close();
}
public function open_album(e:Event):void
{
var inBytes:ByteArray = new ByteArray();
var inFile:File = File.documentsDirectory;
inFile = inFile.resolvePath("canvas3.bin"); // name of file to read
var inStream:FileStream = new FileStream();
inStream.open(inFile, FileMode.READ);
inStream.readBytes(inBytes, 0, inBytes.length);
inStream.close();
inBytes.position = 0;
ui.removeChild(graffitiContainer);
var obj:Sprite = inBytes.readObject() as Sprite; //returns a null
graffitiContainer = obj;
ui = new UIComponent();
graffitiContainer.x = 0;
graffitiContainer.y = 100;
ui.addChild(graffitiContainer);
}
感謝,我希望它實際的對象保存在本地存儲上的文件,所以當我在以後打開它,我可以編輯和進行更改,通過渲染它位圖數據我不會能夠編輯我有它的圖層。 – Tw1tCh
您必須爲兒童遞歸編寫圖形數據的自定義序列以及一般的DisplayObject屬性。您是否爲這些對象編寫了編輯器,或者您打算如何編輯Flash Player運行時中的對象? –
我已經編寫了代碼來處理我的Sprite容器中的所有子對象,繪製方法和形狀......我只需要找到一種方法,我可以將二進制或類似格式的精靈保存起來,因此當我檢索它時我可以保留結構。 – Tw1tCh