- Нажмите, но не отпускайте кнопку.
- Удерживая кнопку, переместите курсор наружу.
- Отпустите кнопку снаружи.
- Вернитесь внутрьи нажмите еще раз.
Вы получите два события вниз без события вверх.
Лучшим решением для перетаскивания может быть прослушивание события MOUSE_MOVE
, а в обработчике события проверьте свойство buttonDown
.Если кнопка движется вниз, это будет правда, иначе ложь.
РЕДАКТИРОВАТЬ: для сцены, даже если вы отпустите кнопку за пределами окна флэш-памяти, то событие Up запускается.Так что для стадии это может работать, но все же вместо таймера использование MOUSE_MOVE
с buttonDown
выглядит мне лучше.Вы можете проверить себя с помощью следующего кода:
public class StageEventTest extends Sprite
{
public function StageEventTest()
{
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
private function onDown(evt:MouseEvent):void {
trace("down");
}
private function onUp(evt:MouseEvent):void {
trace("up");
}
private function onMove(evt:MouseEvent):void {
trace("move", evt.buttonDown);
}
}