2

我正在做一个简单的测试。我想将 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(),但我想在这里将对象视为对象。

4

1 回答 1

5

您应该使用BitmapData::getPixelsand BitmapData::setPixels... 将类实例写入 ByteArray ,因为这样永远不会完全按预期工作...尝试使用 Sprites ... :) ...这主要是由于默认实现以某种方式仅写入一个对象的IDataOutput(ByteArray或) 的属性...从这个意义上说Socket,像素不是 的属性...它只是一个 ActionScript 包装器,它向某些内部 Flash 播放器数据结构公开接口...BitmapDataBitmapData

您应该为编写一个实现的适配器,以便您可以控制发生的事情……本质上,您只需要读取/写入尺寸和实际的像素有效负载……也许是透明标志 .. . 记得使用...BitmapDataIExternalizableregisterClassAlias

问候

back2dos

于 2009-07-23T12:20:42.717 回答