Ошибка Flash AS3

#flash #actionscript-3

#flash #actionscript-3

Вопрос:

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

Ответ №1:

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

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

Альтернативой, и в некоторых случаях это желаемое поведение, является прослушивание обоих MouseEvent.MOUSE_UP и MouseEvent.НАВЕДИТЕ курсор мыши на целевой элемент. Таким образом, вы можете немедленно остановить перетаскивание, если мышь когда-либо покинет этот элемент.

 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
}
  

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