lundi 9 novembre 2009

Code complet Flash actionscript : liste principale et listes d'affichages des conteneurs dans AS3

La liste principale et les listes d'affichages des conteneurs dans AS3 

Dans un projet Flash AS3 « pile », nous allons créer dynamiquement 2 formes vectorielles, un rond et un carré, de couleurs différentes, superposées (leurs centres coïncident), à 80% de valeur d'alpha. Mais ces 2 formes seront elles-mêmes placées dans un même sprite.

Créer « pile.fla » et « pile.as ». Lier les 2 fichiers FLASH et AS.

Dans « pile.as », importez les classes Sprite et Shape.
package {
import flash.display.Sprite;
import flash.display.Shape;


Créez la classe publique et la fonction constructeur :
public class pile extends Sprite {
public function pile():void {


Créez ensuite une occurrence de sprite « cont1 » qui servira de conteneur aux deux formes vectorielles :
var cont1:Sprite = new Sprite();

Créez vos deux formes vectorielles dans deux nouvelles « shapes » :
// tracé d'un carré bleu
var carre:Shape = new Shape();
carre.graphics.beginFill(0x0000FF,.8);
carre.graphics.drawRect(170,170,60,60);
// tracé d'un rond bleu plus clair
var rond:Shape = new Shape ();
rond.graphics.beginFill(0x7268CA, .8);
rond.graphics.drawCircle(200,200,50);


Placez les 2 formes à l'intérieur du conteneur, en précisant leur index :
// placement du rond à l'index 0 du conteneur
cont1.addChildAt(rond,0);
// placement du carré à l'index 1 du conteneur
cont1.addChildAt(carre, 1);

Ajoutez le conteneur à la liste d'affichage principale:
addChild (cont1);
}
}
}

Testez: vous devez afficher votre cercle en fond, et le carré par dessus.
Combien y a-t-il d'objets dans la liste d'affichage principale ?

Pour le savoir: ajoutez une commande après la dernière ligne de code :
trace (numChildren);
Testez : vous obtenez 1.

Combien y a-t-il d'objets dans la liste d'affichage interne de l'occurrence « cont1 » ?
Pour le savoir: ajoutez une commande après la dernière ligne de code :
trace (cont1.numChildren); 
Testez : vous obtenez 2

En procédant ainsi on a bien nos 2 formes vectorielles imbriquées dans cont1 qui est le seul objet présent dans la liste d'affichage principale.
REMARQUES :
Attention, il faut commencer par l'index 0 puis l'index 1 pour ajouter les 2 formes.
Vous pouvez utiliser un swapChildren pour inverser la superposition des 2 shapes, mais en pointant sur l'occurrence cont1.

Testez la commande : 
cont1.swapChildren (rond, carre);

Code complet Flash actionscript : liste principale et listes d'affichages des conteneurs dans AS3



package {
import flash.display.Sprite;
import flash.display.Shape;
public class pile extends Sprite {
public function pile():void {
var cont1:Sprite = new Sprite();
var carre:Shape = new Shape();
carre.graphics.beginFill(0x0000FF,.8);
carre.graphics.drawRect(0,0,60,60);
var rond:Shape = new Shape ();
rond.graphics.beginFill(0x7268CA, .8);
rond.graphics.drawCircle(-30,-30,50);
// placement du rond à l'index 0 du conteneur
cont1.addChildAt(rond,0);
// placement du carré à l'index 1 du conteneur
cont1.addChildAt(carre, 1);
//placement du conteneur sur la scène
cont1.x = 100;
cont1.y = 100;
cont1.swapChildren (rond, carre);
// affichage du conteneur
addChild (cont1);
// affiche le nombre d'enfants de la liste principale
trace (numChildren);
// affiche le nombre d'enfants de la liste interne du sprite cont1
trace (cont1.numChildren);
}
}
}
-->

1 commentaire:

Sébastien a dit…

Tuto intéréssant sur la liste d'affichage.