2009-07-22 81 views
2

我正在做一個簡單的測試。我想將BitmapData寫入ByteArray。我試圖用writeObject()和readObject()來做到這一點。讀取對象似乎難以理解BitmapData。AS3:ByteArray和BitmapData

var byteArray : ByteArray = new ByteArray(); 
var _cache : BitmapData = new BitmapData(640, 480, true, 0x000000); 
var _blank : BitmapData = new BitmapData(640, 480, true, 0x000000); 

byteArray.writeObject(_blank); 
byteArray.position = 0; 
_cache = byteArray.readObject() as BitmapData; 
trace(_cache); // Traces null 

任何人都可以爲我清除它嗎?我無法理解readObject()是怎麼回事。

我知道我可以做到這一點getPixels()和setPixels(),但我想在這裏對象作爲一個對象。

回答

5

你應該使用BitmapData::getPixelsBitmapData::setPixels ......寫作課實例的ByteArray因爲這樣永遠不會完全按預期工作......與精靈嘗試... :) ......這主要是由於這樣的事實,即默認實現不知何故只寫一個對象的屬性到IDataOutputByteArraySocket)......的像素不是在這個意義上說BitmapData的屬性...的BitmapData只是一個ActionScript的包裝,暴露的接口部分內部閃存球員數據結構...

你應該寫一個adapterBitmapData,實現IExternalizable,這樣你就可以控制發生的事情......本質上,你只需要讀/寫尺寸和實際像素有效載荷......也許透明標誌......記得使用registerClassAlias ......

格爾茨

back2dos

+0

真的很有趣。像往常一樣,真棒的答案。謝謝!我會試驗這個。 – grey 2009-07-23 21:21:07