Решение в лоб

:

Код AS3:
hero.addEventListener(MouseEvent.MOUSE_MOVE, heroStartDrag);
hero.addEventListener(MouseEvent.MOUSE_UP, heroStopDrag);
hero.addEventListener(MouseEvent.CLICK, heroClick);
var isHeroMoved:Boolean;
var isDragged:Boolean;
function heroClick(evt:MouseEvent):void {
if(isHeroMoved)
{
isHeroMoved = false;
}
else
{
trace("Click!")
}
}
function heroStartDrag(evt:MouseEvent):void {
if (evt.buttonDown){
hero.removeEventListener(MouseEvent.CLICK, heroClick);
evt.currentTarget.startDrag();
isDragged = true;
}
}
function heroStopDrag(evt:MouseEvent):void {
trace("Stop Drag");
evt.currentTarget.stopDrag();
if(isDragged)
{
isHeroMoved = true;
isDragged = false;
}
}
Может и не очень красиво с двумя флажками, зато работает
