La boucle « for » jouera toujours un rôle d'optimisation des programmes. Qu'il soit en Flash ou en tout autre langage.
Celui-ci s'ajoute aux données et/ou aux éléments visuels à dupliquer. C'est avec une boucle « for » que nous ciblons les données issus d'un fichier XML placer sur un serveur distant ou placer dans un répertoire spécifique sur notre disque dur, ou encore, manipuler des données de variables (*.txt) placer ailleurs sur le web, ou sur notre disque dur. La boucle « while » est souvent utilisé pour manipuler des données d'une base.
Le script suivant ne possède qu'un seul élément graphique. Il s'agit ici d'un composant Flash. Un bouton.
La boucle « for » và permettre de n'avoir qu'un seul élément composant bouton en bibliothèque. Je dis bien un seul.
C'est la boucle « for » et une matrice de sujet (Array) qui và opérer le reste des opérations. Voici le script »
Toutefois c'est la matrice qui controle tout : On ajoute un élément à la matrice et il y aura un bouton de plus car la boucle joue en faveur de la longeur de la matrice, du nombre d'élément qu'elle contiendra. Si donc vous ajouter « 'Forum' » à la matrice, il y aura un bouton Forum au lecteur.
- Code: Tout sélectionner
// .
// .. Vous devez avoir un composant Button en biblio mais pas sur la scène.
// .
// .. importation du package : Obligatoire
// .
import fl.controls.Button;
// .
// .. Variables de controles
// .
var sujetsBoutons:Array = new Array('Accueil', 'Information', 'Navigation', 'Partenaires', 'Contact');
var nomBoutons = 'btn_0';
// .
// .. Votre boucle « for »
// .
for (var i:int = 0; i < sujetsBoutons.length; i++)
{
// .
// .. On instancie la classe Button
// .
var b:Button = new Button();
b.label = sujetsBoutons[i];
b.name = nomBoutons + i;
// ..
trace(b.name);
// ..
var espace:Number = b.width + 5;
var duplication:Number = Math.round(i * espace);
// ..
addChild(b);
// .
// .. Deux paramètres « x » et « y »
// .. au param « x » on aditionne la variable « duplication »
// .
b.move(8 + duplication, 10);
}
Nous ne pouvons pas parler d'itération ou même d'un programme de compteur sans la boucle « for ». Évidemment il y a d'autre forme de boucle comme la boucle « while ».
Dans l'exemple de code ici nous dupliquons un objet visuel (composant Flash prédéfini : Button), mais nous dupliquons l'objet en fonction de la matrice (Array). Voici une capture des résultat visuel »

C'est important de bien comprendre l'utilisation de la boucle « for ». Ici il n'y a qu'un seul Bouton en bibliothèque.
Il ne sert à rien d'avoir 5 boutons en biblio. Pour une optimisation du script vous ne placer qu'un seul composant Button en bibliothèque. C'est le rôle de la boucle for de s'occuper du reste.
Tout ce passe dans la boucle « for ». C'est dans la boucle que nous manipulons la propriété « label » de l'objet « b ». C'est aussi dans la boucle « for » que nous interrogons les noms de boutons. Ceux-ci d'ailleurs ne bénéficient que d'une sortie au Output Panel « btn_00, btn_01, btn_02 etc . . .
Je ne crois pas sincèrement que nous pouvons éviter la boucle « for » en programmation. Cette boucle joue un rôle puissant d'optimisation des programmes. Plusieurs objets peuvent utiliser la même boucle « for ». C'est d'ailleurs le cas ici. Nous dupliquons l'objet bouton et nous profitons de l'occassion pour placer un sujet différent à chaque bouton dupliquer, en utilisant la propriété « label ». b.label = sujetsBoutons[i]; . Nous ciblons la matrice des sujets : Accueil, Information, navigation etc . . .
J'aurais évidemment plein chose à dire concernant la boucle « for », j'en reste là pour l'instant.
Ce topic a été conçu à l'intention de mariemach1 sur sa question des compteurs et incrémentation.
++




