2012-05-02 9 views
0

マスクされた唯一のピクセルをあるビットマップから別のビットマップにコピーする際に、少し問題があります。基本的にはビットマップAをビットマップBでマスクしていますが、これはうまくいきますが、マスクされたピクセルだけをビットマップCにコピーする方法がわかりません。AS3マスクされたビットマップを別のビットマップにコピー

//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

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; 
+0

はあなたにNOxをありがとう!スプライトにマスクされたビットマップをDraw()することで一歩進んだり、Drawter()を使ってすべてをプランターにコピーして、プランターに汚れが置かれているような錯覚を与えました。再度、感謝します! – user1369030

関連する問題