La boucle est un moyen efficace d'éviter la répétition de lignes de code et, du même coup, de simplifier et de clarifier votre script. Un exemple simple vous convaincra.
Ces 7 lignes d'instructions...
bouton1._rotation = 45;
bouton2._rotation = 45;
bouton3._rotation = 45;
bouton4._rotation = 45;
bouton5._rotation = 45;
bouton6._rotation = 45;
bouton7._rotation = 45;
pourraient être simplifiées comme suit:
for (i=1; i<=7; i++) {
_root["bouton"+i]._rotation = 45;
}
La boucle est peut être plus facile à écrire, mais certainement plus compliquée à comprendre au premier abord. Concentrons-nous d'abord sur la syntaxe de cette instruction:
for () {
...;
}
L'instruction for ordonne de répéter le bloc d'instructions entre les accolades en fonction des conditions placées entre les parenthèses. Dans l'exemple précédent, nous avons placé entre parenthèses la ligne suivante:
(i=1; i<=7; i++)
Cette ligne se lit comme suit: au départ de la boucle, la variable i vaut 1, tant que i est inférieur ou égal à 1, la boucle doit se répéter et la valeur de i est à chaque fois incrémentée de 1.
L'instruction i++ permet d'incrémenter la valeur de i de +1 alors que i+=2 ou i+=3 exécute une incrémentation de la valeur précisée (+2, +3).
Dans notre exemple, que signifie l'instruction _root["bouton"+i] ? La variable i est ici concaténé à un texte, et non ajouté. Le résultat de cette expression donne bouton1. L'instruction _root[] permet d'appeler un objet en concaténant des caractères et une variable dynamique. Cette méthode est fort utile dans les boucles, où on essaie justement d'éviter de nommer chaque objet individuellement, mais d'automatiser le processus.
Les boucles avec l'instruction while parviennent au même résultat que les boucles avec for. Dans les deux cas, on initialise une variable, on donne les conditions de répétition de la boucle et on incrémente la variable.
initialisation de la variable;
while (test) {
instruction;
incrémentation de la variable;
}
Comparons, pour une boucle semblable, les deux structures afin de constater les similitudes.
For
on (press) {
affiche = "";
for (i=0; i<=prenoms.length; i++) {
affiche = affiche+prenoms[i];
}
}
While
on (press) {
affiche = "";
i = 0;
while (i<=prenoms.length) {
affiche = affiche+prenoms[i];
i++;
}
}
Attention ! Prenez garde ne pas placer des boucles dans une instruction onClipEvent(enterFrame) car leur exécution est très rapide et risquerait de faire planter le FlashPlayer !