Проблема с ActionScript 3 стирание рисунка - PullRequest
0 голосов
/ 09 октября 2009

У меня есть основанное изображение и несколько спрайтов поверх мувиклипа с изображением basd ... Некоторые из спрайтов могут быть нарисованы пользователем с помощью графического интерфейса API в ActionScript 3. Я могу рисовать объекты на спрайтах, но не могу создайте ластик, как кисть, которая может удалить часть ненужных рисунков. Я пытаюсь использовать Альфа, но нет, это не работает

Я нашел это в Google и нашел решение:

1) Linebitmapstyle ... Это решение не лучшее, потому что мои спрайты могут быть перемещены, поэтому, если я использую linebitmapstyle, он действительно рисует пиксель из изображения в спрайте, но если спрайт переместил нарисованный пиксель, то выиграл t изменить.

2) Маскировка тоже может не сработать ...

Какой лучший способ создания ластика

1 Ответ

3 голосов
/ 09 октября 2009

Возможно, вы захотите использовать растровое изображение, чтобы упростить манипулирование такими вещами (если, конечно, вам не нужна масштабируемая векторная графика!). Для рисования фигур вы все равно можете использовать графический API для создания фигур.

Для этого создайте «фиктивный» спрайт (или другую реализацию IBitmapDrawable), чтобы создать графику, а затем «скопируйте» их в BitmapData функцию bitmapData.draw(). Таким образом, вы можете, например, рисовать с параметром BlendMode.ERASE, чтобы удалить пиксели фигуры.

Пример (из головы):

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