Это довольно распространенный шаблон во 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
}
Это имеет смысл? Дайте мне знать, если это поможет!