public class MySprite extends Sprite
{
public function MySprite() : void
{
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);
}
private function addedToStage(e : Event) : void
{
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
addEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
protected var moving:Boolean = false;
protected var offsetX:int = 0;
protected var offsetY:int = 0;
private function mouseDown(e : Event) : void
{
moving = true;
offsetX = this.x - parent.mouseX;
offsetY = this.y - parent.mouseY;
}
private function mouseMove(e : MouseEvent) : void
{
if (moving)
{
if (e.buttonDown)
{
this.x = offsetX + parent.mouseX;
this.y = offsetY + parent.mouseY;
}
else
{
moving = false;
}
}
}
private function mouseUp(e : Event) : void
{
moving = false;
}
private function removedFromStage(e : Event) : void
{
removeEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
}