我正在使用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();
}
答案 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。