Werken met weergaveobjectcontainers

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Als een object DisplayObjectContainer uit het weergaveoverzicht wordt verwijderd, wordt verplaatst of wordt getransformeerd, wordt elk weergaveobject in de DisplayObjectContainer ook verwijderd, verplaatst of getransformeerd.

Een weergaveobjectcontainer is zelf een type weergaveobject; het kan aan een andere weergaveobjectcontainer worden toegevoegd. De volgende afbeelding toont bijvoorbeeld een container voor weergaveobjecten pictureScreen, die een lijncontour en vier andere weergaveobjectcontainers bevat (van het type PictureFrame):

Afbeelding op volledige grootte weergeven
A.
Een vorm waarmee de rand van de weergaveobjectcontainer pictureScreen wordt gedefinieerd

B.
Vier onderliggende weergaveobjectcontainers van het object pictureScreen

Als u een weergaveobject in het weergaveoverzicht wilt weergeven, moet u deze toevoegen aan de weergaveobjectcontainer die zich in het weergaveoverzicht bevindt. U kunt dit via de methode addChild() of de methode addChildAt() van het object container doen. Zonder de laatste regel van de volgende code zou het object myTextField bijvoorbeeld niet worden weergegeven:

var myTextField:TextField = new TextField(); 
myTextField.text = "hello"; 
this.root.addChild(myTextField);

In ditzelfde voorbeeld wijst this.root naar de weergaveobjectcontainer MovieClip die de code bevat. In uw eigen code moet u een andere container opgeven.

Gebruik de methode addChildAt() om het element op een bepaalde positie aan de lijst met onderliggende items van de weergaveobjectcontainer toe te voegen. Deze op nul gebaseerde indexposities in de lijst met onderliggende items hebben betrekking op de laag waarop de weergaveobjecten worden geplaatst (van voor naar achter). Bekijk bijvoorbeeld de volgende drie weergaveobjecten. Elk object is gemaakt op basis van een aangepaste klasse met de naam Ball.

De containerlaag van deze weergaveobjecten kan worden aangepast met de methode addChildAt(). Neem bijvoorbeeld de volgende code:

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);

Nadat u deze code hebt uitgevoerd, worden de weergaveobjecten als volgt geordend in het DisplayObjectContainer-object container. Zie de lagen van de objecten.

Als u een object boven aan het weergaveoverzicht wilt plaatsen, voegt u het object opnieuw aan de lijst toe. Als u, op basis van de vorige code, ball_A naar de bovenkant van de stapel wilt verplaatsen, gebruikt u de onderstaande coderegel:

container.addChild(ball_A);

Deze code verwijdert ball_A van zijn locatie in het weergaveoverzicht van de container en voegt zichzelf opnieuw aan de bovenkant van het overzicht toe. Hiermee wordt het object boven op de stapel geplaatst.

U kunt de methode getChildAt() gebruiken om de laagvolgorde van de weergaveobjecten te verifiëren. De methode getChildAt() retourneert de onderliggende objecten van een container op basis van het indexnummer dat u doorgeeft. De volgende code onthult bijvoorbeeld de namen van weergaveobjecten op verschillende posities in de lijst met onderliggende items van het DisplayObjectContainer-object container:

trace(container.getChildAt(0).name); // ball_A 
trace(container.getChildAt(1).name); // ball_C 
trace(container.getChildAt(2).name); // ball_B

Als u een weergaveobject uit de lijst met onderliggende items van de bovenliggende container verwijdert, worden de daarboven gelegen elementen één positie naar beneden geschoven in de onderliggende index. Op basis van de vorige code, toont de volgende code hoe het weergaveobject dat zich op positie 2 in de container DisplayObjectContainer bevindt, naar positie 1 wordt verplaatst als een lager gelegen weergaveobject in de lijst met onderliggende items wordt verwijderd:

container.removeChild(ball_C); 
trace(container.getChildAt(0).name); // ball_A 
trace(container.getChildAt(1).name); // ball_B

De methoden removeChild() en removeChildAt() verwijderen een weergaveobjectinstantie niet geheel. Ze verwijderen het uit de lijst met onderliggende items van de container. Er kan nog steeds door een andere variabele naar de instantie worden verwezen. (Gebruik de operator delete om een object volledig te verwijderen.)

Omdat een weergaveobject slechts een bovenliggende container heeft, kunt u een instantie van een weergaveobject slechts aan één weergaveobjectcontainer toevoegen. De volgende code toont bijvoorbeeld dat het weergaveobject tf1 alleen in een container kan bestaan (in dit geval een Sprite die de klasse DisplayObjectContainer uitbreidt):

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); // text 2 
trace(container2.numChildren); // 1 
trace(container2.getChildAt(0).name); // text 1

Als u een weergaveobject in een weergaveobjectcontainer aan een andere weergaveobjectcontainer toevoegt, wordt deze verwijderd uit de eerste lijst met onderliggende items van de weergaveobjectcontainer.

Naast de hierboven beschreven methoden, definieert de klasse DisplayObjectContainer verschillende methoden voor het werken met onderliggende weergaveobjecten, waaronder:

  • contains(): hiermee wordt bepaald of een weergaveobject een onderliggend object van een DisplayObjectContainer is.

  • getChildByName(): hiermee wordt een weergaveobject op naam opgehaald.

  • getChildIndex(): hiermee wordt de indexpositie van een weergaveobject geretourneerd.

  • setChildIndex(): hiermee wordt de positie van een onderliggend weergaveobject gewijzigd.

  • removeChildren(): hiermee worden meerdere onderliggende weergaveobjecten verwijderd.

  • swapChildren(): hiermee wordt de volgorde (van voor naar achter) van twee weergaveobjecten verwisseld.

  • swapChildrenAt(): hiermee wordt de volgorde (van voor naar achter) van twee weergaveobjecten verwisseld, opgegeven door hun indexwaarden.

Zie de relevante onderwerpen in de Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform voor meer informatie.

Let erop dat een weergaveobject dat niet in het weergaveoverzicht staat (een object dat niet is opgenomen in een onderliggende weergaveobjectcontainer van het werkgebied) bekend staat als een niet-weergegeven weergaveobject.