[AS2->AS3] MouseEvent, où est passé onReleaseOutside ?
28 février 2008 – 12:09En actionscript 3, lorsque vous désirez interagir avec la souris vous devez passer par les écouteurs "MouseEvent". J'avais déjà posté un petit aide mémoire sur la différence de synthaxe entre un bouton en actionscript 2 et 3. Mais on peut se rendre compte que dans les évènements MouseEvent il n'y a pas d'équivalent au "onReleaseOutside" qu'on utilisait en AS 2.
La solution serait donc d'écouter l'évènement "MOUSE_UP" sur le stage.
Exemple :
button.addEventListener(MouseEvent.MOUSE_DOWN, handlerMouseDown); function handlerMouseDown(e:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_UP, handlerMouseUp); // onPress } function handlerMouseUp(e:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_UP, handlerMouseUp); // onReleaseOutside }
Dans l'exemple ci-dessous le "onReleaseOutside" s'exécutera même si la souris se trouve sur le bouton. Mais vous pouvez vérifier à l'aide du paramètre MouseEvent la cible sur laquelle se trouvait la souris au "MOUSE_UP".
function handlerMouseUp(e:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_UP, handlerMouseUp); if(e.target.name != "button"){ // onReleaseOutside } }

5 Responses to “[AS2->AS3] MouseEvent, où est passé onReleaseOutside ?”
Il me semble que dans la ligne 3 du second exemple
» if(e.target.name != « button »){ »
« name » n’est pas nécessaire .
By Nema on fév 28, 2008
Désolé, j’ai été un peu rapide , cette ligne devrait s’écrire
if(e.target != button){
sans les guillemets autour de button.
By Nema on fév 28, 2008
Oui dans le cas où je voudrais que mon « onReleaseOutside » s’exécute dès qu’il n’est pas sur ce « type » d’objet.
Mais en imaginant que j’ai plusieurs boutons et que je veux juste que le « onReleaseOutside » ne s’exécute pas sur un bouton en particulier, il est plus simple de cibler directement le nom d’instance du celui-ci sinon il va s’exécuter sur tous les boutons du même type. non ?
By Sakana on fév 28, 2008
J’ai peur que tu ne confondes la référence à l’instance du bouton -ici button » et la propriété name de ce même objet .
En AS3 à la différence de l’AS2 ces deux choses sont différentes.
Et ici button -on aurait du éviter ce terme qui prête à confusion- ne cible pas tout les objets de type type Button mais un objet référencé par ce terme dans une variable ou sur la timeline dans le panel « Propriétés » … ce qui revient au même.
By Nema on fév 28, 2008
Autre article sur le sujet + dragOver et dragOut: http://www.scottgmorgan.com/blog/index.php/2007/12/20/ondragover-ondragout-and-onreleaseoutside-in-as3/
By Cerebral on mar 1, 2008