Frage

Gibt es eine Möglichkeit, eine colortransform zu einem BitmapData- in einem Kreis anzulegen, anstatt in einem Rechteck?

Statt rechteckigen Teile eines Bildes des Löschens durch den Alphakanal, wie in dem folgenden Code reduzieren, ich möchte es im Kreis tun.

 _bitmap.colorTransform(new Rectangle(mouseX-d/2, mouseY-d/2, d, d),
 new ColorTransform(1, 1, 1, .5, 0, 0, 0, 1));

ich einen Code haben, der durch die Pixel-Schleifen, extrahiert den Alpha-Wert und verwendet setPixel aber es Nähte deutlich langsamer als die Funktion colortransform.

War es hilfreich?

Lösung

Versuche einen Kreis mit der Zeichnung API (flash.display.Graphics) zu schaffen und dann die Daten mit BlendMode.ERASE auf die Bitmap-Zeichnung. Das könnte Ihr Problem lösen, wenn ich es richtig verstanden hat.

var circle : Shape = new Shape;
circle.graphics.beginFill(0xffcc00, 1);
circle.graphics.drawEllipse(-50, -50, 100, 100);

// Create a transformation matrix for the draw() operation, with
// a translation matching the mouse position.
var mtx : Matrix = new Matrix();
mtx.translate(mouseX, mouseY);

// Draw circle at mouse position with the ERASE blend mode, to
// set affected pixels to alpha=0.
myBitmap.draw(circle, mtx, null, BlendMode.ERASE);

Ich bin nicht 100% sicher, dass der ERASE-Mischmodus satisfyingly mit dem draw () Befehl funktioniert, aber ich kann nicht sehen, warum soll es nicht. Bitte lassen Sie mich wissen, wie es funktioniert!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top