在Flash中绘制位图会产生Alpha通道问题

时间:2012-11-01 04:21:43

标签: actionscript-3 flash drawing alpha-transparency

我正在使用AS3在Flash中创建绘图应用。 "笔触"是用位图创建的。当笔刷分布时,此代码似乎工作正常。 [见图1]

但是当在同一个地方重复点击相同的笔划时,显而易见的是,笔刷笔触不仅添加了alpha而且还删除了它。 [见图2]我想要消除"框"围绕笔触的形状。

我目前使用的代码段如下。是否存在" alpha add"这样这个alpha减法不会发生?笔触笔记blob在这里供参考。 [见图3]

1 Drawing app http://theluv.is/downloading/drawImg1.png 2 Drawing app http://theluv.is/downloading/drawImg2.png 3 Drawing app http://theluv.is/downloading/brushBlob.png

function stampImage(){
var matrix:Matrix = new Matrix();
matrix.translate(mouseX + brushOffsetX, mouseY + brushOffsetY);

maskSprite.graphics.beginBitmapFill(blob, matrix, false, false);
maskSprite.graphics.drawRect(mouseX + brushOffsetX, mouseY + brushOffsetY, blob.width, blob.height);
maskSprite.graphics.endFill();
}

1 个答案:

答案 0 :(得分:1)

使用BitmapData.copyPixels方法。您可以在那里指定alpha混合。 当然,你必须修改你的代码。首先,你将拥有一个canvas bitmapdata。

var bmpd:BitmapData;

要在屏幕上绘制它,您只需创建一个Bitmap对象。

var bmp:Bitmap = new Bitmap(...);
bmp.bitmapData = bmpd;
addChild(bmp);

当你想画一些东西时使用

bmpd.copyPixels(blob, blob.rect, new Point(x,y), null, null, true);

其中blob是带有画笔纹理的BitmapData。

问题是如果要旋转画笔纹理。在这种情况下,请使用BitmapData.draw