AS3将屏蔽位图复制到另一个位图上

时间:2012-05-02 04:25:29

标签: actionscript-3 copy bitmapdata masking

我在将一个位图中的屏蔽像素复制到另一个位图时遇到了一些问题。基本上我用位图B屏蔽位图A,这很好,但是我不确定如何将屏蔽像素复制到Bitmap 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()掩盖纹理,以便将其复制到播种机图形上的污垢应该是什么?任何和所有的帮助将不胜感激! :

1 个答案:

答案 0 :(得分: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;