Contrôler une occurrence et naviguer sur la scène
CHAPITRE 4
99
Problème du MOUSE_UP_OUTSIDE ?
Lorsque vous relâcherez le bouton de la souris au cours d’un glisser-déposer alors que le
curseur se trouve encore au-dessus de l’occurrence que vous venez de déplacer, il n’y
aura aucun problème. En revanche, si le curseur ne se trouve plus sur l’occurrence, pour
différentes raisons, au moment où vous relâcherez le bouton de la souris, la mobilité de
l’occurrence sera toujours active : vous ne pourrez alors plus l’annuler.
Fichier de référence : Chapitre4/draganddrop4.fla
Nous allons donc adapter notre script de la façon suivante :
var zoneLimite:Rectangle = new Rectangle(55,237,173,0);
variateur.addEventListener(MouseEvent.MOUSE_DOWN,variateurMobile);
variateur.addEventListener(MouseEvent.MOUSE_UP,variateurArrete);
function variateurMobile(evt:Event) {
stage.addEventListener(MouseEvent.MOUSE_UP,variateurArrete);
variateur.startDrag(false,zoneLimite);
}
function variateurArrete(evt:Event) {
stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP,variateurArrete);
}
Si vous observez attentivement ce code, vous constaterez que nous avons ajouté deux
lignes d’instructions. La première sert à détecter le relâchement du bouton de souris par
l’utilisateur quelle que soit la position de la souris.
stage.addEventListener(MouseEvent.MOUSE_UP,variateurArrete);
La deuxième sert, en revanche, à enlever l’écouteur que nous avons déclaré dans la
fonction variateurMobile().
Explications
Il faut simplement comprendre qu’en ayant relâché le bouton de la souris alors que le curseur n’était plus
sur l’occurrence rendue mobile, l’événement MOUSE_UP ne s’est pas produit.
Rappel
Nous vous rappelons que la propriété stage d’une occurrence fait référence à la scène de l’animation.
Message de l’auteur
Au moment de l’écriture de ce livre, c’est la seule solution que j’ai trouvée pour pallier l’absence de gestion
de l’événement MOUSE_UP_OUTSIDE. Cette technique présente tout de même l’inconvénient de déclencher les fonctions de rappel des occurrences sur lesquelles vous relâcherez votre clic si l’événement
MOUSE_UP est géré.
Précédent

- 127/426

Suivant