The front page All those lovely tutorials Other sites of interest More info about Stickman
Stickman

Masque déplaçable

Traduction: Philippe Allouche


 INFOS 

Version Flash 5
Niveau Intermediate
Creé 29th Aug 2000
Modifié 30th Aug 2000

 TRADUCTIONS 

English

 FICHIERS 

ZIP

FLA

J'ai été très déçu de découvrir que la programmation de Flash 5 ne permettait toujours pas de déplacer un masque. Alors j'ai pensé mettre à jour mon Tutoriel sur Masque Déplaçable pour Flash 4 pour une version Flash 5. Voilà le résultat --vous trouverez un fichier .fla ici.

Est-ce vraiment différent?

Pas vraiment --le principe est le même, mais le code a été revu de façon à bénéficier des nouveautés de Flash 5.

D'abord on crée un clip d'animation avec un objet à masquer (dans l'exemple Masked Object, avec du texte). Puis on le dépose sur un nouveau clip d'animation (Mask Movie) et on lui donne le nom d'occurence masked_object. Dans le nouveau clip d'animation, on crée un masque (ici un cercle rouge)sur le calque du dessus, et on transforme le calque en calque de masque. Ensuite on dépose ce clip d'animation sur la scène principale et on le nomme (mask_movie dans l'exemple).

Toute la ruse réside dans l'action du clip d'animation _root.mask_movie. On peut voir cette action soit en sélectionnant le clip puis clic-droit et en choisissant Actions, soit en sélectionnant le clip et en cliquant la flêche bleue 'Show Actions' en bas à droite de la fenêtre du logiciel.

onClipEvent (mouseMove) {
 // Get the co-ordinates of the mouse
 x = _root._xmouse;
 y = _root._ymouse;
 // Move the masked clip to the mouse co-ordinates
 this._x = x;
 this._y = y;
 // Move the masked object by exactly the opposite amount
 this.masked_object._x = (0-x);
 this.masked_object._y = (0-y);
 // Update the movie to smooth the movement
 updateAfterEvent();
}

Comme vous pouvez le remarquer, il n'y en a pas lourd. Le clip utilise l'évènement 'onClipEvent' pour détecter chaque mouvement de la souris, puis affecte les variables x et y aux coordonnées de la souris. Notez l'utilisation du terme _root. dans ces lignes; à moins de le préciser, Flash 5 attribue les coordonnées 'locales' à la souris --cad relatives au centre du clip d'animation utilisé-- plutôt que le centre de l'animation principale. On précise donc _root. pour éviter ça.

Une fois connue la position de la souris, on se sert des termes this._x et this._y (qui ont les mêmes fonctions que la commande SetProperty de Flash 4) pour y placer le mask_movie. Notez bien l'utilisation du paramètre this -- c'est un raccourci, signifiant 'ce clip d'animation' de cette façon nous n'avons pas à préciser tout le chemin (_root.mask_movie).

Pour donner l'illusion que l'objet masqué reste à la même place pendant que le masque bouge, nous le déplaçons dans la direction opposée et à égale distance -- calculées ici par (0-x) et (0-y). C'est une bidouille mais ça marche.

Finalement la commande updateAfterEvent(); force le mouvement du masque à se régénérer immédiatement, donnant un mouvement beaucoup moins saccadé que s'il avait lieu une fois par image.

C'est tout?

C'est tout. Simple (j'espère...)

Bon courage !

Stickman

All files and text copyright ©Stickman 1998 - 2003. For copyright and terms of use information, please read this page.