насколько понял, нужно отличить драг от клика
Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
public class Main extends Sprite
{
private var touchP:Point;
private var currP:Point;
private var drag:Boolean;
private var tol:Number = 10;
private var body:Sprite;
public function Main():void
{
body = new Sprite();
body.graphics.beginFill(0);
body.graphics.drawRect(100, 100, 100, 40);
addChild(body);
body.addEventListener(MouseEvent.MOUSE_DOWN, body_mouseDown);
body.addEventListener(MouseEvent.CLICK, body_click);
}
private function body_click(e:MouseEvent):void
{
if (!drag)
{
trace("CLICK");
}
}
private function body_mouseDown(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
touchP = new Point(stage.mouseX, stage.mouseY);
currP = new Point(stage.mouseX, stage.mouseY);
drag = false;
}
private function stage_mouseUp(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
}
private function stage_mouseMove(e:MouseEvent):void
{
body.x += stage.mouseX - currP.x;
body.y += stage.mouseY - currP.y;
currP = new Point(stage.mouseX, stage.mouseY);
if (Point.distance(currP, touchP) > tol)
{
drag = true;
}
}
}
}
alexandrratush уже в самом начале топика сказал как