Posted by: kolonel on: novembre 6, 2007
Comment faire défiler les lettres d’une animation aléatoirement jusqu’au mot voulu comme ici ?
Avec un peu d’actionscript biensur mais rassurez-vous , tout ici vous sera expliqué progressivement.
Avant de foncer tête baissée, rappelons certaines choses:
A chaque lettre, à chaque caractère, l’ordinateur associe une seule et unique valeur.Autrement dit , chaque lettre est taduit par un nombre spécifique, un code. Et comme il est impossible à Flash de choisir une lettre au hasard, nous allons faire en sorte qu’il le fasse de façon artificielle.Pour cela, il suffit simplement de selectionner un nombre aléatoirement, et ça Flash sait le faire. Reste alors à utiliser la fonction chr(number); qui transforme un nombre en sa lettre correspondante et le tour est joué.
Dans cette fonction, on remplace number par le nombre associé à une lettre spécifique. Toutefois cela ne veut pas dire que 1=”A”, puisque la lettre A commence en fait avec le nombre 65.
commençons :
1° créez un nouveau symbole de type movie clip et nommez-le “lettre1″
2° selectionnez l’outil Texte (T) et créez un champ (sur la feuille du symbole)
3° allez vers le panneau options texte (Fenêtre>Panneau>Text options)
4° sélectionnez texte dynamique dans le menu déroulant
5° Dans le champ variable, tapez “lettre2″
6° vous pouvez changer la police de caractère si vous voulez
7° Tapez une lettre dans le champ texte
8° Créez un nouveau symbole de type movie clip et nommez “Text”
9° De votre bibliothèque, faites glisser “lettre1″ dans la feuille du nouveau symbole crée et centrez-le
10° Glissez-déposez ce symbole dans la scène
11° Passons maintenant à l’actionscript: cliquez droit sur “lettre1″ et choisissez Actions. La fenêtre d’actions apparaît. Insérez-y le script suivant à l’exact (copier-coller):
onClipEvent (load) {
go = true;
}
onClipEvent (enterFrame) {
if (go) {
x = random(122);
if ((x>=65) and (x<=122)) {
this.lettre2 = chr(x);
}
if (x == 65) {
//remplace [number] par le nombre correspondant à la première lettre du mot que vous voulez
go = false;
}
}
}
expliquons un peu tout ça:
onClipEvent(load) : le symbole movie clip se charge
go = true; : mise en place de la variable go=true , qui est une valeur boolèene.
onClipEvent(enterFrame) : c’est ici que toutes les actions vont se réaliser aussi longtemps que le movie clip sera joué. ( vous noterez que le movie clip se jouera indéfinimment jusqu’à ce qu’il rencontre l’ action stop();
if (go) : la variable “go” décide si l’action se réalise ou pas. La première fois, les actions se réalisent car “go” est donnée comme vrai. Flash lit ceci de cette façon “si go est true, fais ci. si c’est false, ne le fais pas”
x = random(122); :mise en place de la variable x qui sera un nombre aléatoire compris entre 1 et 122. 122 correspond au z minuscule
if ((x >= 65) and (x <= 122)) : nous voulons qu’apparaissent seulement les lettres comprises entre A-Z et a-z. La variable x doit alors être à la fois égale ou plus grande à 65 ( qui correspond à A) et égale ou inférieure à 122 (=Z)
this.lettre2 = chr(x); : ceci va dire à flash de faire un champ de texte dynamique égale à la lettre choisie aléatoirement à l’étape d’avant
if (x == [number]) : le défilement aléatoire de chaque lettre continuera jusqu’à ce qu’à ce qu’on tombe sur la bonne lettre.
go = false; : cette action dit à flash d’arrêter le choix aléatoire des lettres, puisque la bonne a déjà été trouvée.
A présent , maintenez CTRL enfoncé et faites glisser le symbole autant de fois qu’il y a de lettres dans le mot ou la phrase que vous souhaitez.
Positionnez les lettres.
allez sur chaque lettre et changer [number] par le nombre correspondant à la lettre que vous voulez (rapellez vous pour les codes ACSII que A=65 et dans l’ordre B=66 , C=67 … et pour les minuscules a=97 b=98 … z=122)
et pour finir glissez “text” dans la scène principale et let’s play !
Ce billet est une traduction libre. Je remercie Manny Dimatulac aka Thoripes pour le tutoriel dans sa version originale que vous pouvez trouver ici.