/ / Problem mit ActionScript 3 löschen Zeichnung - ActionScript, Grafik, Zeichnung, löschen

Problem mit ActionScript 3 Löschen von Zeichnungen - ActionScript, Grafik, Zeichnen, Löschen

Ich habe ein basiertes Bild und einige Sprites aufder based image movieclip ... Einige der Sprites können vom Benutzer mit graphics api in ActionScript 3 gezeichnet werden. Ich kann Dinge auf die Sprites zeichnen, aber ich kann keinen radiergummiähnlichen Pinsel erzeugen, der einen Teil der unerwünschten Zeichnungen entfernen kann. Ich versuche Alpha zu verwenden, aber nein, es funktioniert nicht

Ich habe darüber gegoogelt und die Lösung gefunden:

1) Linebitmapstyle ... Diese Lösung ist nicht die beste, denn meine Sprites können verschoben werden. Wenn ich linebitmapstyle verwende, wird das Pixel vom Bild zum Sprite gezeichnet, aber wenn das Sprite verschoben wird, ändert sich das gezeichnete Pixel nicht.

2) Maskierung funktioniert möglicherweise auch nicht für mich ....

Was ist der beste Weg, um den Radierer zu erstellen

Antworten:

3 für die Antwort № 1

Sie möchten vielleicht lieber ein Bitmap verwenden, um ein solches zu erstellenDinge einfacher zu manipulieren (es sei denn, Sie müssen skalierbare Vektorgrafiken natürlich tun!). Um Formen zu zeichnen, können Sie immer noch die Grafik-API verwenden, um die Formen zu erstellen.

Instantiieren Sie dazu ein "Dummy" -Sprite (oder ein anderes IBitmapDrawable Implementierung), um die Grafiken zu erstellen und sie dann in die BitmapData das bitmapData.draw() Funktion. Auf diese Weise können Sie beispielsweise mit der Option zeichnen BlendMode.ERASE um die Pixel der Form zu entfernen.

Beispiel (von ganzem Herzen):

// creates a bitmap data canvas
var bitmapData:BitmapData = new BitmapData(500, 500);

// creates a bitmap display object to contain the BitmapData
addChild(new Bitmap(bitmapData));

// creates a dummy object to draw and draws a 10px circle
var brush:Sprite = new Sprite(); // note this is not even added to the stage
brush.graphics.beginFill(0xff0000);
brush.graphics.drawCircle(10, 10, 10);

// the matrix will be used to position the "brush strokes" on the canvas
var matrix:Matrix = new Matrix();

// draws a circle in the middle of the canvas
matrix.translate(250, 250);
bitmapData.draw(brush, matrix

// translates the position 5 pixels to the right to slightly erase the previously
// drawn circle creating a half moon
matrix.translate(5, 0);
bitmapData.draw(brush, matrix,null,BlendMode.ERASE);