1

AS3 を使用して Flash で描画アプリを作成しています。「ブラシストローク」はビットマップで作成されます。このコードは、ブラシストロークが広がっている場合にうまく機能するようです。[画像 1 を参照]

しかし、同じ場所で同じストロークを繰り返しクリックすると、ブラシストロークがアルファを追加するだけでなく、削除もしていることは明らかです。[画像 2 を参照] ブラシ ストロークを囲む「ボックス」シェイプを削除したい。

私が現在使用しているコードスニペットは以下のとおりです。このアルファ減算が発生しないように、「アルファ加算」などはありますか? ブラシストロークのブロブは参考用です。[画像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メソッドを使用します。そこでアルファブレンディングを指定できます。もちろん、コードを変更する必要があります。まず最初に、キャンバス ビットマップ データを用意します。

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 に答える