|
|
Traduction: Philippe Allouche
Faites glissez le losange gris pour faire bouger le masque
|
||||
|
||||
|
||||
Un message sur Flashpad demandait si c'est possible de faire glisser un masque sous Flash 4. Au sens strict du terme la réponse est non, mais j'ai trouvé cette technique pour le simuler. Voilà le fichier .fla zippé.
Ce n'est pas vraiment parfait -- il est possible de perdre l'alignement de l'objet masqué dans certaines circonstances -- mais ces bugs peuvent être réglés par une bidouille. J'ai laissé le fichier dans sa forme la plus simple pour illustrer l'exemple aussi les bugs sont toujours là.
Puisqu'on ne peut pas faire glisser un masque, il faut penser différemment. Dans l'exemple le masque est fixe et tout le reste bouge...
D'abord on crée un clip d'animation contenant un objet masqué -- dans l'exemple c'est le personnage Stickman et le text (Object). Ensuite on dépose ce clip dans un second clip d'animation en lui donnant un nom d'occurrence (/object). Dans le nouveau clip d'animation on crée un masque (ici un petit carré) et on lui fait masquer le calque contenant le clip d'animation. Enfin on ajoute un bouton (le petit losange gris).
Ensuite on donne au bouton les actions suivantes :
On (Press) Set Variable: "/:Drag" = 1 End on On (Release, Release Outside) Set Variable: "/:Drag" = 0 End on
Cela attribue à une variable (/:Drag) soit la valeur 1, soit la valeur 0, selon que l'utilisateur clique sur le bouton ou non. Ensuite on dépose ce nouveau clip d'animation dans la scène principale et on lui donne un nom d'occurrence (/mask).
On crée un clip d'animation complètement vide, on le dépose sur la scène principale et on le nomme tracker.
On crée un nouveau clip d'animation, on le nomme control. On crée une image-clé en image deux et on lui donne une action d'image Go To and Play (frame 1). Ensuite on ajoute les actions suivantes à l'image-clé 1 :
If (/:Drag eq 1)
Start Drag ("/tracker", lockcenter)
End If
If (/:Drag eq 0)
Stop Drag
End If
Set Property ("/mask/object", X Position) = 0-(GetProperty ("/tracker",_x))
Set Property ("/mask/", X Position) = GetProperty ("/tracker",_x)
Set Property ("/mask/object", Y Position) = 0-(GetProperty ("/tracker",_y))
Set Property ("/mask/", Y Position) = GetProperty ("/tracker",_y)
N'oubliez pas de déposer ce nouveau clip d'animation dans la scène principale.
Regardez attentivement et vous verrez que quand /:Drag est à 1 (cad la souris est cliquée), le clip d'animation control (qui boucle à chaque image), positionne le /Mask/Object (cad le texte et le clip du petit bonhomme) à l'opposé du clip d'animation masque (dont la position est influencée par la position de tracker). Ainsi, si le clip d'animation masque se trouve à x=20, y=10, l'objet est déplacé en x=-20, y=-10. On a alors l'impression qu'il ne bouge pas pendant que le masque bouge.
Je sais. Parfois je me sens tellement doué que je prends peur. Vraiment.
Bon courage !
All files and text copyright ©Stickman 1998 - 2003. For copyright and terms of use information, please read this page.