Tous les composants ActionScript 3.0 héritent de la classe DisplayObject, ce qui leur permet d’accéder à ses méthodes et propriétés pour interagir avec la liste d’affichage. La
liste d’affichage
est la hiérarchie des objets affichés et des éléments visuels dans une application. Cette hiérarchie inclut les éléments suivants :
-
La scène, qui est le conteneur de niveau supérieur
-
Les objets d’affichage qui incluent notamment les formes, les clips et les champs de texte
-
Les conteneurs d’objet d’affichage, qui sont des types spéciaux d’objets d’affichage pouvant contenir des objets d’affichage enfant
L’ordre des objets dans la liste d’affichage détermine leur profondeur dans le conteneur parent. La profondeur d’un objet désigne sa position de haut en bas ou de l’avant vers l’arrière sur la scène ou dans son conteneur d’affichage. L’ordre de profondeur est apparent, indépendamment du fait que les objets se chevauchent ou non. A chaque objet de la liste d’affichage correspond une profondeur sur la scène. Si vous souhaitez modifier la profondeur d’un objet en le plaçant devant ou derrière les autres objets, vous devez modifier sa position dans la liste d’affichage. L’ordre par défaut des objets dans la liste d’affichage correspond à l’ordre dans lequel ils sont placés sur la scène. Dans la liste d’affichage, la position 0 correspond à l’objet au bas de l’ordre de profondeur.
Ajout d’un composant à la liste d’affichage
Vous pouvez ajouter un objet à un objet DisplayObjectContainer en appelant la méthode
addChild()
ou
addChildAt()
du conteneur. Dans le cas de la scène, vous pouvez également ajouter un objet à sa liste d’affichage lors de la programmation en le créant ou, dans le cas des composants, en le faisant glisser sur la scène depuis le panneau Composants. Pour ajouter un objet à un conteneur à l’aide d’ActionScript, commencez par créer une occurrence de celui-ci en appelant son constructeur à l’aide de l’opérateur
new
, puis la méthode
add Child()
ou
addChildAt()
pour le placer sur la scène et dans la liste d’affichage. La méthode
addChild()
place l’objet à la position suivante dans la liste d’affichage, tandis que la méthode
addChildAt()
spécifie la position à laquelle l’objet doit être ajouté. Si vous spécifiez une position déjà occupée, l’objet qui se trouve à cette position, et ceux des positions de niveau supérieur, sont décalés d’une position vers le haut. La propriété
numChildren
d’un objet DisplayObjectContainer contient le nombre d’objets d’affichage inclus dans celui-ci. Vous pouvez extraire un objet de la liste d’affichage en appelant la méthode
getChildAt()
et en spécifiant sa position, ou si vous connaissez le nom de l’objet, en appelant la méthode
getChildByName()
.
Remarque :
lorsque vous ajoutez un composant à l’aide d’ActionScript, vous devez affecter un nom à sa propriété de nom pour pouvoir y accéder par nom dans la liste d’affichage.
L’exemple suivant affiche les noms et positions de trois composants dans la liste d’affichage. Commencez par faire glisser les composants NumericStepper, Button et ComboBox sur la scène de manière à ce qu’ils se chevauchent et affectez-leur les noms d’occurrence
aNs
,
aButton
et
aCb
. Ajoutez ensuite le code suivant dans le panneau Actions, sur l’image 1 du scénario :
var i:int = 0;
while(i < numChildren) {
trace(getChildAt(i).name + " is at position: " + i++);
}
Les lignes suivantes doivent s’afficher dans le panneau Sortie :
aNs is at position: 0
aButton is at position: 1
aCb is at position: 2
Déplacement d’un composant dans la liste d’affichage
Vous pouvez modifier la position d’un objet dans la liste d’affichage, ainsi que sa profondeur d’affichage, en appelant la méthode
addChildAt()
et en spécifiant le nom d’un objet et la position où vous voulez le placer en tant que paramètres de la méthode. Par exemple, ajoutez le code suivant à l’exemple précédent de manière à placer le composant NumericStepper sur le dessus et répétez la boucle pour afficher les nouvelles positions des composants dans la liste d’affichage :
this.addChildAt(aNs, numChildren - 1);
i = 0;
while(i < numChildren) {
trace(getChildAt(i).name + " is at position: " + i++);
}
Les lignes suivantes doivent s’afficher dans le panneau Sortie :
aNs is at position: 0
aButton is at position: 1
aCb is at position: 2
aButton is at position: 0
aCb is at position: 1
aNs is at position: 2
Le composant NumericStepper doit également s’afficher devant les autres composants à l’écran.
Notez que
numChildren
est le nombre d’objets (de 1à
n
) dans la liste d’affichage tandis que la première position de la liste est 0. Par conséquent, si la liste contient trois objets, la position d’index du troisième objet est 2. Cela signifie que vous pouvez référencer la dernière position de la liste d’affichage, ou l’objet du dessus en termes de profondeur d’affichage, en tant que
numChildren - 1
.
Suppression d’un composant dans la liste d’affichage
Vous pouvez supprimer un composant d’un conteneur d’objets d’affichage et de sa liste d’affichage à l’aide des méthodes
removeChild()
et
removeChildAt()
. L’exemple suivant place trois composants Button l’un devant l’autre sur la scène et ajoute un écouteur d’événements pour chacun d’entre eux. Lorsque vous cliquez sur chaque composant Button, le gestionnaire d’événements le supprime de la liste d’affichage et de la scène.
-
Créez un document de fichier Flash (ActionScript 3.0).
-
Faites glisser un composant Button du panneau Composants vers le panneau Bibliothèque.
-
Ouvrez le panneau Actions, sélectionnez l’image 1 dans le scénario principal et ajoutez le code suivant :
import fl.controls.Button;
var i:int = 0;
while(i++ < 3) {
makeButton(i);
}
function removeButton(event:MouseEvent):void {
removeChildAt(numChildren -1);
}
function makeButton(num) {
var aButton:Button = new Button();
aButton.name = "Button" + num;
aButton.label = aButton.name;
aButton.move(200, 200);
addChild(aButton);
aButton.addEventListener(MouseEvent.CLICK, removeButton);
}
Pour obtenir une description détaillée de la liste d’affichage, voir le chapitre « Programmation de l’affichage » du manuel
Programmation avec ActionScript 3.0
.
|
|
|