#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
}
Имеет ли это смысл? Дайте мне знать, если это поможет!