Ошибка прошивки AS3 - PullRequest
0 голосов
/ 07 мая 2011

addEventListener для MOUSE_UP не работает -> кто-нибудь знает, что не так?Это работает, если я удаляю строку enter_frame

1 Ответ

1 голос
/ 07 мая 2011

Это довольно распространенный шаблон во Flash, когда вы выполняете перетаскивание. В основном происходит то, что если вы перемещаете цель из-под курсора мыши (или если вы перемещаете курсор мыши из-за цели), событие MouseUp никогда не срабатывает.

Самым простым решением, которое я часто использовал, является изменение цели вашего прослушивателя событий MouseUp. Вместо того, чтобы слушать предмет, который вы пытаетесь перетащить, вместо этого слушайте на сцене.

Альтернатива, и в некоторых случаях это желаемое поведение, заключается в прослушивании MouseEvent.MOUSE_UP и MouseEvent.MOUSE_OUT для целевого элемента. Таким образом, вы можете немедленно остановить перетаскивание, если мышь покидает этот элемент.

draggableItem.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);

function startDragging(e:MouseEvent):void {
stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
// OR:
draggableItem.addEventListener(MouseEvent.MOUSE_OUT, stopDragging);
draggableItem.addEventListener(MouseEvent.MOUSE_UP, stopDragging);

draggableItem.startDrag() // etc
}

Это имеет смысл? Дайте мне знать, если это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...