/ / Problem z ActionScript 3 kasowanie rysunku - ActionScript, grafika, rysunek, kasowanie

Problem z actionscript 3 usuwanie rysunku - actionscript, grafika, rysunek, kasowanie

Mam obraz bazowy i kilka ikonek na wierzchubazowy obraz movieclip ... Niektóre sprite'y mogą zostać narysowane przez użytkownika za pomocą graficznej api w actionscript 3. Mogę rysować rzeczy na sprite'ach, ale nie mogę „utworzyć gumki jak pędzla, która może usunąć część niechcianych rysunków. Staram się używać Alpha, ale nie działa

Sprawdziłem go i wymyśliłem rozwiązanie:

1) Linebitmapstyle ... To rozwiązanie nie jest najlepsze, ponieważ moje duchy mogą być przenoszone, więc jeśli używam linebitmapstyle, to rysuje piksel z obrazu do ikonki, ale jeśli ikonka przesunie narysowany piksel, nie zmieni się.

2) Maskowanie może nie działać u mnie albo ....

Jaki jest najlepszy sposób tworzenia gumki

Odpowiedzi:

3 dla odpowiedzi № 1

Możesz raczej użyć bitmapy, aby to zrobićrzeczy łatwiejsze do manipulowania (chyba, że ​​musisz zrobić skalowalną grafikę wektorową!). Aby narysować kształty, możesz nadal używać graficznego interfejsu API do tworzenia kształtów.

W tym celu utwórz instancję „sztucznej” ikonki (lub innej) IBitmapDrawable implementacja) do tworzenia grafiki, a następnie „kopiowania” ich do BitmapData temu bitmapData.draw() funkcjonować. W ten sposób możesz na przykład rysować z opcją BlendMode.ERASE w celu usunięcia pikseli kształtu.

Przykład (z góry głowy):

// 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);