2011-05-07 4 views
0

Le addEventListener pour MOUSE_UP ne fonctionne pas -> quelqu'un sait ce qui est mal? Cela fonctionne si je supprime la ligne enter_frameErreur Flash AS3

Répondre

1

Ceci est un modèle assez courant dans Flash lorsque vous faites du glisser/déposer. Fondamentalement, ce qui se passe est que si vous déplacez la cible sous le curseur de la souris (ou si vous déplacez le curseur de la souris sur la cible), l'événement MouseUp ne se déclenche jamais.

La solution la plus simple, et celle que j'ai souvent utilisée, est de changer la cible de votre écouteur d'événement MouseUp. Plutôt que d'écouter sur l'objet que vous essayez de faire glisser, écoutez plutôt sur scène.

L'alternative, et c'est le comportement souhaité dans certains cas, est d'écouter à la fois MouseEvent.MOUSE_UP et MouseEvent.MOUSE_OUT sur votre élément cible. De cette façon, vous pouvez arrêter le glisser immédiatement si la souris quitte cet élément.

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 
} 

Est-ce logique? Dis moi si ça aide!

+0

Oui sens parfait. Merci!! – user559142