我正在做一个简单的测试。我想将BitmapData写入ByteArray。我正在尝试使用writeObject()和readObject()。读取对象似乎无法理解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(),但是我想在这里将对象视为一个对象。
答案 0 :(得分:5)
你应该使用BitmapData::getPixels
和BitmapData::setPixels
...将类实例写入ByteArray,因为它永远不会按预期完成...尝试使用Sprites ... :) ...这主要是由于这个事实,默认实现只是以某种方式将对象的属性写入IDataOutput
(ByteArray
或Socket
)...像素不是{{1}的属性在这个意义上...... BitmapData
只是一个ActionScript包装器,它将接口暴露给某个内部flash播放器数据结构......
你应该为BitmapData
写一个adapter,它实现IExternalizable
,这样你就能控制,发生什么......基本上,你只需要读/写尺寸和实际像素有效载荷...也许是透明标志......记得使用registerClassAlias
...
格尔茨
back2dos