1

我正在使用 AS3 在 Flash 中创建绘图应用程序。“笔触”是用位图创建的。当笔触分散时,此代码似乎可以正常工作。[见图1]

但是当在同一个地方重复点击同一个笔触时,很明显,笔触不仅添加了 alpha,而且还删除了它。[参见图 2] 我想消除笔触周围的“盒子”形状。

我目前使用的代码片段如下。是否有“alpha add”之类的东西,这样不会发生这种 alpha 减法?笔触斑点在这里供参考。[见图3]

1 绘图应用程序 http://theluv.is/downloading/drawImg1.png 2 绘图应用程序 http://theluv.is/downloading/drawImg2.png 3 绘图应用程序 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();
}
4

1 回答 1

1

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

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

于 2012-11-01T13:09:43.633 回答