0

マスクされたピクセルのみをあるビットマップから別のビットマップにコピーするのに少し問題があります。基本的に、ビットマップ A をビットマップ B でマスキングしていますが、これは正常に機能していますが、マスクされたピクセルだけをビットマップ 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 に答える