AS3:ByteArray和BitmapData

gre*_*rey 2 copy bytearray actionscript-3 bitmapdata

我正在做一个简单的测试.我想将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
Run Code Online (Sandbox Code Playgroud)

任何人都可以为我清除这个吗?我无法理解readObject()出了什么问题;

我知道我可以这样做getPixels()和setPixels(),但是我想在这里将对象视为一个对象.

bac*_*dos 5

你应该使用BitmapData::getPixelsBitmapData::setPixels...将类实例写入ByteArray,因为它永远不会像预期的那样完全运行...尝试使用Sprites ... :) ...这主要是因为默认实现只是写了一个对象的属性IDataOutput(ByteArraySocket)...像素不是BitmapData那个意义上的属性...... BitmapData它只是一个ActionScript包装器,它将接口暴露给某个内部flash播放器数据结构......

你应该写一个适配器BitmapData,实现IExternalizable,让你有控制,过会发生什么...基本上,你只需要读/写的尺寸,而实际像素有效载荷......也许是透明的标志..记得用registerClassAlias......

格尔茨

back2dos