0

我在将仅蒙版的像素从一个位图复制到另一个位图时遇到了一点问题。基本上,我用位图 B 掩盖位图 A,这工作正常,但我不确定如何将被掩盖的像素复制到位图 C 上,这是我想要保留的唯一一个。

//all this works fine

var _texture:Bitmap = new Bitmap(new Dirt_Bitmap);      
var _mask:Bitmap = new Bitmap(new Mask_Bitmap);     
var _planter:Bitmap = new Bitmap(new Planter_Bitmap);

_texture.cacheAsBitmap = _mask.cacheAsBitmap = true;
_texture.mask = _mask;

//This is where things get weird :[

var newBitmap:Bitmap = new Bitmap(new BitmapData(50, 50, true));
newBitmap.bitmapData.copyPixels(_texture.bitmapData, _texture.bitmapData.rect, new Point());

_planter.bitmapData.copyPixels(_newBitmap.bitmapData, _newBitmap.bitmapData.rect, new Point());

我将如何只复制或绘制或者 merg() 只是蒙版纹理,以便将其复制到应有污垢的播种机图形上?任何和所有的帮助将不胜感激!:]

4

1 回答 1

1

当您使用 时copyPixels,您实际上是在复制位图的内容,而没有任何环境添加的内容(没有遮罩或变换)。

改为使用draw()

这是一个示例:

var texture:Bitmap = new Bitmap(new BitmapData(200, 200, false, 0xFFFF0000));      
var imageMask:Bitmap = new Bitmap(new BitmapData(200, 200, true, 0));
var rect:Rectangle = new Rectangle(0, 0, 10, 10);
imageMask.bitmapData.fillRect(rect, 0xFF000000);
rect.x = 50;
rect.y = 50;
imageMask.bitmapData.fillRect(rect, 0xFF000000);

texture.cacheAsBitmap = true;
imageMask.cacheAsBitmap = true;
texture.mask = imageMask;

addChild(imageMask);
addChild(texture);

var planter:Bitmap = new Bitmap(new BitmapData(200, 200, true, 0));

// that's it
planter.bitmapData.draw(texture);

addChild(planter);
planter.x = 100;
于 2012-05-02T14:35:28.183 回答