Boucle

Les instructions de bouclage vous permettent d'exécuter un bloc de code spécifique de façon répétée à l'aide d'une série de valeurs ou de variables. Adobe vous recommande de toujours placer le bloc de code entre accolades ({}). Bien que vous puissiez omettre les accolades si le bloc de code contient une seule instruction, cette pratique est déconseillée pour la même raison que celle qui s'applique aux instructions conditionnelles : elle augmente la probabilité que les instructions ajoutées ultérieurement soient exclues du bloc de code par inadvertance. Si vous ajoutez ultérieurement une instruction à inclure dans le bloc de code mais que vous oubliez d'ajouter les accolades nécessaires, l'instruction n'est pas exécutée dans la boucle.

Sous-rubriques

for
for..in
for each..in
while
do..while

for

La boucle for vous permet de faire une itération sur une variable pour une plage de valeurs spécifique. Vous devez fournir trois expressions dans une instruction for : une variable définie sur une valeur initiale, une instruction conditionnelle qui détermine le moment où la boucle prend fin et une expression qui modifie la valeur de la variable avec chaque boucle. Par exemple, le code suivant boucle à cinq reprises. La valeur de la variable i commence à 0 et prend fin à 4, et le résultat est constitué par les nombres compris entre 0 et 4, chacun sur sa propre ligne.

var i:int;
for (i = 0; i < 5; i++)
{
    trace(i);
}

for..in

La boucle for..in vous permet de faire une itération sur les propriétés d'un objet ou les éléments d'un tableau. Par exemple, utilisez une boucle for..in pour faire une itération sur les propriétés d'un objet générique (les propriétés d'un objet n'étant pas conservées dans un ordre particulier, elles peuvent apparaître dans un ordre imprévisible) :

var myObj:Object = {x:20, y:30};
for (var i:String in myObj)
{
    trace(i + ": " + myObj[i]);
}
// résultat :
// x: 20
// y: 30

Vous pouvez également faire une itération sur les éléments d'un tableau :

var myArray:Array = ["one", "two", "three"];
for (var i:String in myArray)
{
    trace(myArray[i]);
}
// résultat :
// un
// deux
// trois

Vous ne pouvez pas itérer sur les propriétés d'un objet lorsqu'il s'agit d'une instance de classe définie par l'utilisateur, sauf si la classe est dynamique. Et même dans ce dernier cas, vous ne pouvez faire d'itération que sur les propriétés ajoutées dynamiquement.

for each..in

La boucle for each..in vous permet de faire une itération sur les éléments d'une collection (balises dans un objet XML ou XMLList, valeurs des propriétés d'un objet ou éléments d'un tableau). Par exemple, comme le montre l'extrait suivant, vous pouvez utiliser une boucle for each..in pour itérer sur les propriétés d'un objet générique, mais contrairement à la boucle for..in, la variable d'itérateur dans une boucle for each..in contient la valeur de la propriété au lieu de son nom :

var myObj:Object = {x:20, y:30};
for each (var num in myObj)
{
    trace(num);
}
// résultat :
// 20
// 30

Vous pouvez faire une itération sur un objet XML ou XMLList, comme l'indique l'exemple suivant :

var myXML:XML = <users>
                   <fname>Jane</fname>
                   <fname>Susan</fname>
                   <fname>John</fname>
                </users>;

for each (var item in myXML.fname)
{
    trace(item);
}
/* résultat
Jane
Susan
John
*/

Vous pouvez également faire une itération sur les éléments d'un tableau, comme l'indique cet exemple :

var myArray:Array = ["one", "two", "three"];
for each (var item in myArray)
{
    trace(item);
}
// résultat :
// un
// deux
// trois

Vous ne pouvez pas faire une itération sur les propriétés d'un objet si ce dernier est une instance d'une classe scellée. Même pour les instances de classes dynamiques, vous ne pouvez pas faire une itération sur des propriétés fixes qui sont des propriétés définies comme faisant partie d'une définition de classe.

while

La boucle while est semblable à une instruction if qui se répète tant que la condition est true. Par exemple, le code suivant produit le même résultat que l'exemple de boucle for :

var i:int = 0;
while (i < 5)
{
    trace(i);
    i++;
}

L'un des inconvénients que présente la boucle while par rapport à la boucle for est que les risques de boucles sans fin sont plus importants avec les boucles while. Par exemple, le code qui utilise la boucle for ne passe pas la compilation si vous omettez l'expression qui incrémente la variable du compteur, alors que le code qui utilise la boucle while est compilé. Et sans l'expression qui incrémente i, la boucle se poursuit sans fin.

do..while

La boucle do..while est une boucle while qui garantit que le bloc de code est exécuté au moins une fois, car la condition est vérifiée une fois que le bloc de code est exécuté. Le code suivant présente un exemple simple de boucle do..while générant une sortie même lorsque la condition n'est pas remplie :

var i:int = 5;
do
{
    trace(i);
    i++;
} while (i < 5);
// résultat : 5

Flash CS3

 

M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire

Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000052.html