Forum de discussion
Forum « Flash et Shockwave » (archives)
Re: [Tutoriel] Garder l'états cliqué d'un bouton
Envoyé: 13 septembre 2006, 8h30 par Oznog
Le bouton ne permet pas l'état « cliqué ». C'est compréheisible puisque ce n'est plus un bouton dans la mesure ou il n'est plus possible de le cliquer. Il devient une simple image indiquant l'option ou la page.
Ceci dit, Marcomedia aurait pu ajouter un cinquième état, « innactif » par exemple mais c'est inutile car Flash a déjà en lui-même un outil pour ça. Une troisième dimenssion je dirais. Et en y pensant, il faudrait de toute façon des centaines d'états pour toutes les exeptions.
Tu peux ajouter de l'intelligence à ton bouton. Au lieu d'avoir une simple image, ça peut être un clip à deux images-clé! La première ton bouton, la deuxième, une simple image représentant l'état cliqué. Il suffira de se promener entre les deux images-clé avec des « gotoAndStop ».
1. Fait ton bouton normalement [ctrl-F8] de type bouton et laisse-le dans la librairie.
2. Cré un clip de type « movieClip » [ctrl-F8]. Sur la première image-clé, glisse ton bouton. Et dans la fenêtre action, met un « stop(); ».
3. Ajoute une image-clé [F7] sur le deuxième cadre. Et copie sur cette deuxième image-clé, une image du bouton cliqué. Et ajoute aussi un « stop(); » dans la fenêtre action.
4. Et voilà pour la structure. Glisse ton bonton-clip sur la scène et donne-lui le nom d'instance « monClip1 ».
5. Maintenant, double-clic sur le clip et sélectionne le bouton sur la première image-clé. Dans la fenêtre action du bouton, ajoute ce code :
on (release) {
this.gotoAndStop(2);
// Ici l'action normale du bouton...
}
C'est tout simple! voilà l'art de Flash. Avec cette technique tu peux faire n'importe quoi, par exemple des transitions très complexe entre les états etc.
6. Tu dois refaire les étapes 2 et 3 pour chacun de tes boutons en t'assurant de leur donner un nom d'instance unique à chacun : monClip1, monClip2, monClip3...
Mais comment revenir à l'état bonton ?
Il suffit alors de faire l'inverse, « gotoAndStop(1); ».
Par exemple avec 3 boutons :
on (release) {
// Premier bouton (monClip1)
this.gotoAndStop(2);
// Réactive les deux autres boutons
this._parent.monClip2.gotoAndStop(1);
this._parent.monClip3.gotoAndStop(1);
// Ici l'action normale du bouton...
}
on (release) {
// Deuxième bouton (monClip2)
this.gotoAndStop(2);
// Réactive les deux autres boutons
this._parent.monClip1.gotoAndStop(1);
this._parent.monClip3.gotoAndStop(1);
// Ici l'action normale du bouton...
}
on (release) {
// Troisième bouton (monClip3)
this.gotoAndStop(2);
// Réactive les deux autres boutons
this._parent.monClip1.gotoAndStop(1);
this._parent.monClip2.gotoAndStop(1);
// Ici l'action normale du bouton...
}
Le processus peut être optimisé, une boucle par exemple dans le cas d'un très gros menu.
Ciao
Oznog
Réponses
|