[mcButton] - la fin d'une galère
Par Laurent Deketelaere le lundi, décembre 19 2005, 15:26 - Flash plateforme - Lien permanent
Qui n'a jamais été confronté au limitation des boutons de Flash ?!
Les boutons sont une version light des MovieClips, la seul chose qu'ils ont pour eux ce sont les trois états qu'ils ont par défaut (_up, _over et _down), plus la zone de survole. Ce qui est très bien pour faire des boutons simple, c'est même quelque chose de magique pour un utilisateur lambda. Mais dés qu'il s'agit de créer des boutons avancés, par exemple avec des transitions entre les différents états ça se complique. :p
Fasse à ce problème, pas mal d'utilisateurs se sont fabriqué leurs astuces.
Dernièrement j'étais sur un projet où le graphiste utilisait un MovieClip qui contenait des interpolations pour faire des transitions entre les différents états du bouton. Par dessus le MovieClip il avait placé un bouton qui avait uniquement la zone de survole rempli, Ce bouton «vide» était utilisé que pour les gestionnaires d'événements qui lançait des gotoAndPlay() dans le MovieClip. Maintenant imaginé la prise de tête quand je devais modifier l'occurrence du clip placé sous le bouton; obligé de verrouiller le calque des boutons pour avoir accès au clip. :/
Tout ça pour dire que chacun à sa méthode, plus ou moins pratique. :p
Cela fait un moment que j'utilise un hack, et je me suis toujours demandé pourquoi il n'était pas plus utilisé, je vais donc vous le présenter dans ce billet.
En gros on va transformer un MovieClip en bouton.
Marche à suivre :
-
Tracez une zone de survole et transformez le en MovieClip (F8).
-
Entrez dans le clip, ajoutez un nouveau calque ("Actions") et placez le code suivant :
// masque la zone de survole à l'exécution. this._visible = false; // remplace la zone de survole du clip parent par celui du clip enfant. this._parent.hitArea = this;
-
Retournez sur la scène principale et créez un nouveau MovieClip (le bouton).
-
Ajoutez un nouveau calque ("Actions") avec trois images clefs nommé ("_up", "_over", "_down"), ajoutez aussi sur chaque image clef un stop();.
-
Ajoutez un calque ("Area") en dessous de la pile glissez y le clip créé au début.
-
Il vous suffit maintenant de créer sur un nouveau calque avec les différents états du bouton.
Voilà nous avons un magnifique bouton, heu pardon MovieClip Maintenant pour l'activé il suffit de lui attacher un gestionnaire d'événements du genre :
mcBouton.onPress = function() { trace("Qui m'a pressé ?!"); }
C'est pas magique ? Quoi vous êtes pas convaincu ? Oui je sais c'est un simple bouton, mais on peut lui ajouter quelques extensions ce qui n'est pas possible avec un bouton classique. Par exemple on peut créer ces boutons dynamiquement. Modifier le texte dynamiquement à l'intérieur. Ajouter un état au bouton, du genre gotoAndPlay("_disable"); La liste est vraiment longue.
Voici un petit exemple, ce sont deux mcButton l'un à coté de l'autre, ils ont cinq états ("_up", "_over", "_down", "_disable" et "_noClick"), la position initiale est _noClick. Loasque l'on clique sur un des bouton il se déactive et active l'autre.
Chargez mcButton.fla
La première fois ça parait long, mais avec un petit jsfl maison, c'est aussi facile que de créer un bouton, mais avec tout les désavantages en moins. Donc je me suis mit au JSFL se week-end et grâce à l'aide de Jeanphi et Wuastc je peux vous fournir cette commande qui automatise la tache.
Pour l'installer chargez : mcButton.mxp.
Installez le via l'Extension Manager
Ensuite dans Flash sélectionnez un élément sur la scène allez dans Commande < mcButton et plouf, vous avez un bouton :p
Pour ce qui est de la zone de survole, le jsfl fait une copie de de la sélection de départ, une étoile restera une étoile
MAJ - [06/01/06] - Ajouts d'une palette pour nommer les deux MovieClip (mcButton et mcArea) - mcButton_v1.1.mxp.zip.
Commentaires
salut
nikelle la commande !
le seul truc qui pêche c'est l'Extension Manager qui merde avec Flash 8, il ne reconnait pas la versiion française de flash 8 et me créé un fépertoire Eng pour y coller la commande
lol, ils sont trop fort chez MM, pardon chez Adobe. :p
T'as éssayé de réinstaller l'Extension Manager ?
Je ne comprends rien mais c'est certainement génial !
Y
Bon je vais faire une nouvelle version un peut plus fini, si vous avez des envies, c'est le moment. :p
C' est super interessant merci! mais par pitié distribue le *.fla. Xtension manager est une vrai da***. Bravo en tout cas =)
le fla est distribué http://www.get-url.net/blog/download/0512_mcButton/mcButton.fla.zip
je veux imprimer dynamiquemnt un fichier pdf dans flash par JSFL
heu càd ?
Person je fais imprimer, quand la fenetre apparait je fais enregistrer comme pdf et le tour est joué, maintenant je suis pas certains que la possibilité de sortir un pdf de n'importe quelle impression soit dispo sous windows, à voir.
info+
Sinon je te conseil de passer par le forum de media-box.net pour trouver une réponse à ta question.
j veux faire imprimer un fichier pdf par FSCommand mais en flash 8 ( sans ouvrir le fichier pdf et le message d unregistred)
Ce que je comprnds pas si si tu veux le faire en ligne ou dans l'IDE de Flash.
Si c'est en ligne à mon avis tu es obligé de passer par un longage serveur pour produire le pdf.
Si c'est dans l'IDE tu fais comme je expliqué en haut, en tt cas sur mac, si c'est sur un autre systeme d'exploitation, il faut voir ce qui existe.