2009-10-08 3 views
0

У меня есть изображение на изображении и некоторые спрайты поверх изображения based image ... Некоторые из спрайтов могут быть нарисованы пользователем с помощью графического api в ActionScript 3. Я могу рисовать вещи на sprites, но я не могу создать ластик, подобный кисти, который может удалить часть нежелательных рисунков. Я пытаюсь использовать альфа, но нет, это не работаетПроблема с actionscript 3 стирающим рисунком

Я гугл об этом и придумало решение:

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

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

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

+0

Саймона следующего раза, когда вы могли бы разместить вы работаете код. – 2011-01-24 16:37:32

ответ

3

Вы скорее можете использовать растровое изображение, чтобы сделать такие вещи проще манипулировать (если вам не нужна масштабируемая векторная графика, конечно!). Чтобы рисовать фигуры, вы все равно можете использовать графический 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); 
+0

Я сделал то, что вы сказали и скорректировал с моим кодом ... Я использовал линию, как кисть, но не работает ... – LittleFunny

+0

Теперь это работает .. Спасибо ... – LittleFunny

+0

отлично, без проблем. –

Смежные вопросы