В рисовалке 2 режима - рисование линиями и стирание. Пытаюсь реализовать второе через BlendMode.ERASE, но как-то не работает... Нужно чтобы eraser создавал стирающий след по тем линям что нарисованы drawingLine. maskLine - не отображается, нужна для другого.

Код AS3:
private var con:Sprite = new Sprite();
private var drawingLine:Sprite = new Sprite();
private var maskLine:Sprite = new Sprite();
private var eraser:Shape = new Shape();
con.cacheAsBitmap = true;
eraser.cacheAsBitmap = true;
eraser.graphics.beginFill(0xff0000, 0.5);
eraser.graphics.drawCircle(0, 0, brushSize);
eraser.graphics.endFill();
eraser.blendMode= BlendMode.ERASE;
this.addEventListener(MouseEvent.MOUSE_MOVE,onMove);
this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
this.addEventListener(MouseEvent.MOUSE_UP,onUp);
protected function onDown(ev:MouseEvent):void {
if(brushMode){
con.addChild(drawingLine);
drawingLine.graphics.lineStyle(brushSize, brushColor, 0.5);
drawingLine.graphics.moveTo(mouseX, mouseY);
maskLine.graphics.lineStyle(brushSize, brushColor, 1);
maskLine.graphics.moveTo(mouseX, mouseY);
this.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
} else {
drawingLine.addChild(eraser);
this.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
}
protected function onUp(ev:MouseEvent):void {
this.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
protected function onMove(ev:MouseEvent):void {
if (brushMode){
drawingLine.graphics.lineTo(mouseX, mouseY);
maskLine.graphics.lineTo(mouseX, mouseY);
} else {
eraser.x = mouseX;
eraser.y = mouseY;
}
}
Добавлено через 15 минут
Опять поторопился. Конечно, нужно рисовать линии eraser также как и drawingLine. При том в 2-х вариантов - для отображения и для маски.