Documentation Flash CS3 |
|||
| Programmation avec ActionScript 3.0 > Programmation de l'affichage > Utilisation des objets d'affichage > Utilisation des conteneurs d'objets d'affichage | |||
Si un objet DisplayObjectContainer est supprimé de la liste d'affichage, ou s'il est déplacé ou modifié d'une façon quelconque, chaque objet d'affichage de ce conteneur DisplayObjectContainer est également supprimé, déplacé ou modifié.
Par ailleurs, un conteneur d'objets d'affichage est en soi un type d'objet d'affichage, il peut donc être ajouté à un autre conteneur d'objets d'affichage. Par exemple, l'image ci-dessous montre un conteneur d'objets d'affichage, pictureScreen, contenant un contour de forme et quatre autres conteneurs d'objets d'affichage (du type PictureFrame) :
Pour qu'un objet d'affichage apparaisse dans la liste d'affichage, il est nécessaire de l'ajouter à un conteneur d'objets d'affichage figurant dans cette liste. Pour ce faire, on utilise la méthode addChild() ou la méthode addChildAt() de l'objet conteneur. Par exemple, sans la ligne finale du code ci-dessous, l'objet myTextField ne sera pas affiché :
var myTextField:TextField = new TextField(); myTextField.text = "hello"; this.root.addChild(myTextField);
Dans cet exemple de code, this.root pointe sur le conteneur d'objets d'affichage MovieClip, qui contient le code. Dans votre propre code, vous pouvez spécifier un autre conteneur.
Pour ajouter l'objet enfant à une position spécifique dans la liste des enfants du conteneur d'objets d'affichage, utilisez la méthode addChildAt(). Ces positions d'index en base zéro dans la liste des enfants sont équivalentes à la position des objets parmi les calques (du premier plan à l'arrière-plan). Considérons par exemple les trois objets d'affichage suivants. Chaque objet a été créé à partir d'une classe de l'utilisateur nommée Ball.
La méthode addChildAt() permet de modifier la profondeur de ces objets d'affichage dans leur objet conteneur. Par exemple, considérons le code suivant :
ball_A = new Ball(0xFFCC00, "a"); ball_A.name = "ball_A"; ball_A.x = 20; ball_A.y = 20; container.addChild(ball_A); ball_B = new Ball(0xFFCC00, "b"); ball_B.name = "ball_B"; ball_B.x = 70; ball_B.y = 20; container.addChild(ball_B); ball_C = new Ball(0xFFCC00, "c"); ball_C.name = "ball_C"; ball_C.x = 40; ball_C.y = 60; container.addChildAt(ball_C, 1);
Après l'exécution de ce code, les objets d'affichage sont positionnés dans l'objet DisplayObjectContainer container comme suit. Notez la position verticale des objets.
Pour repositionner un objet au sommet de la liste d'affichage, il suffit de l'ajouter à nouveau à la liste. Par exemple, après le code ci-dessus, pour amener ball_A au sommet de la pile (au premier plan), utilisez la ligne de code suivante :
container.addChild(ball_A);
Ce code supprime ball_A de son emplacement actuel dans la liste d'affichage de container, et l'ajoute ensuite au sommet de la liste, ce qui a pour effet de le placer en haut de l'empilement d'objets.
Vous pouvez utiliser la méthode getChildAt() pour vérifier l'ordre des objets affichés dans les calques. La méthode getChildAt() renvoie les objets enfants d'un conteneur en fonction de l'indice que vous lui passez en paramètre. Par exemple, le code ci-dessous révèle les noms des objets d'affichage de diverses positions dans la liste des enfants de l'objet DisplayObjectContainer container :
trace(container.getChildAt(0).name); // ball_A trace(container.getChildAt(1).name); // ball_C trace(container.getChildAt(2).name); // ball_B
Si vous supprimez un objet d'affichage de la liste des enfants de son conteneur parent, les éléments de la liste ayant un indice plus élevé descendent tous d'une position dans l'index des enfants. Par exemple, à la suite du code ci-dessus, le code suivant montre que l'objet d'affichage qui était en position 2 dans l'objet DisplayObjectContainer container passe à la position 1 si un autre objet enfant d'indice supérieur est supprimé :
container.removeChild(ball_C);trace(container.getChildAt(0).name); // ball_Atrace(container.getChildAt(1).name); // ball_B
Les méthodes removeChild() et removeChildAt() ne suppriment pas entièrement une instance d'un objet d'affichage, elles la suppriment seulement de la liste des enfants du conteneur. Une autre variable peut encore référencer l'instance. (Pour supprimer entièrement un objet, utilisez l'opérateur delete.)
Un objet d'affichage n'ayant qu'un seul conteneur parent, il n'est possible d'ajouter une instance d'un objet d'affichage qu'à un seul conteneur d'objet d'affichage. Par exemple, le code suivant montre que l'objet d'affichage tf1 ne peut exister que dans un seul conteneur (dans ce cas précis, un Sprite qui étend la classe DisplayObjectContainer) :
tf1:TextField = new TextField(); tf2:TextField = new TextField(); tf1.name = "text 1"; tf2.name = "text 2"; container1:Sprite = new Sprite(); container2:Sprite = new Sprite(); container1.addChild(tf1); container1.addChild(tf2); container2.addChild(tf1); trace(container1.numChildren); // 1 trace(container1.getChildAt(0).name); // texte 2 trace(container2.numChildren); // 1 trace(container2.getChildAt(0).name); // texte 1
Si vous ajoutez à un conteneur d'objets d'affichage un objet qui est déjà contenu dans un autre conteneur d'objets d'affichage, l'objet sera supprimé de la liste des enfants de ce dernier.
Outre les méthodes décrites ci-dessus, la classe DisplayObjectContainer définit plusieurs méthodes permettant de manipuler des objets d'affichage enfants :
contains() : détermine si un objet d'affichage est un enfant d'un objet DisplayObjectContainer.getChildByName() : renvoie un objet d'affichage à partir de son nom.getChildIndex() : renvoie l'indice d'un objet d'affichage.setChildIndex() : modifie la position d'un objet d'affichage.swapChildren() : échange l'ordre d'empilement de deux objets d'affichage.swapChildrenAt() : échange l'ordre d'empilement de deux objets d'affichage, spécifiés par leurs indices.Pour plus d'informations, consultez les sections appropriées du manuel Référence du langage et des composants ActionScript 3.0.
N'oubliez pas qu'un objet d'affichage qui ne figure pas dans la liste d'affichage (donc, qui ne se trouve pas dans un conteneur d'objets d'affichage enfant de la scène) est appelé objet d'affichage hors liste.
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/00000148.html