|
|
Traduction: Philippe Allouche
|
||||
|
||||
|
||||
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.
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. Simple (j'espère...)
Bon courage !
All files and text copyright ©Stickman 1998 - 2003. For copyright and terms of use information, please read this page.