Вот есть идея. Просто перерисовывать линию белую, если нужно стереть. Не подходит такой вариант?
Код AS3:
package
{
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Graphics;
import flash.events.MouseEvent;
/**
* ...
*/
public class Main extends Sprite
{
private var container:Sprite;
private var simpleRect:Shape;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
container = new Sprite();
simpleRect = new Shape();
simpleRect.graphics.beginFill(0xFAAAFA);
simpleRect.graphics.lineStyle(1);
simpleRect.graphics.drawRect(100, 100, 300, 500);
container.addChild(simpleRect);
container.addEventListener(MouseEvent.MOUSE_OUT, containerMouseLeftListener);
container.addEventListener(MouseEvent.MOUSE_OVER, containerAddListenerCleaner);
addChild(container);
simpleRect.graphics.lineStyle(20, 0xFFFFFF);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
}
private function containerCleanerListener(e:MouseEvent):void {
simpleRect.graphics.lineTo(e.target.mouseX, e.target.mouseY);
simpleRect.graphics.moveTo(e.target.mouseX, e.target.mouseY);
}
private function containerAddListenerCleaner(e:MouseEvent):void {
simpleRect.graphics.moveTo(e.target.mouseX, e.target.mouseY);
e.currentTarget.addEventListener(MouseEvent.MOUSE_MOVE, containerCleanerListener);
}
private function containerMouseLeftListener(e:MouseEvent):void {
e.currentTarget.removeEventListener(MouseEvent.MOUSE_MOVE, containerCleanerListener);
}
}
}