Die Klasse DisplayObjectContainer, addChild und removeChild

Jedes Anzeigeobjekt, das im Flash Player-Fenster zu sehen sein soll, muss in der Anzeigeliste (Displaylist) aufgelistet sein.
Die Anzeigeliste selbst ist hierachisch geschachtelt aufgebaut. Damit dieser hierachische Aufbau möglich ist, benötigt man die Klasse DisplayObjectContainer.
 

Die Klasse DisplayObjectContainer:

Die abstrakte DispalyObjectContainer-Klasse ist die Basisklasse für alle Objekte, die als Anzeigeobjekt-Container eingesetzt werden können. Alle Klassen, die ihre Eigenschaften und Methoden von der Klasse DisplayObjectContainer erben, besitzen die Fähigkeit beliebig viele DisplayObject-Instanzen als "Kinder" zu beinhalten. Durch Container wird es möglich, mehrere visuelle Anzeigeobjekte zusammen zu fassen und als Einheit zu sehen, die entsprechend manipuliert werden kann. Ein Container selbst kann weitere Container als "Kinder" beinhalten. Dadurch ist eine hierachisch geschachtelte Zusammenfassung von Anzeigeobjekten möglich.

Wesentliche Methoden der abstrakten Klasse DisplayObjectContainer beziehen sich daher auf die Möglichkeit, DisplayObject-Instanzen als "Kinder" in den Container hineinlegen und wieder herausnehmen zu können sowie die Liste der "Kinder" zu verwalten.

 

Die am häufigsten gebrauchten Methoden und Eigenschaften sind wieder gelb markiert und werden nachfolgend kurz beschrieben.

addChild-Methoden:
Durch addChild wird der DisplayObjectContainer-Instanz eine untergeordnete DisplayObject-Instanz hinzugefügt. Die untergeordneten "Kinder" werden in der Child-Liste abgespeichert. Das erste "Kind" steht an der Stelle 0 (hat den Index 0), das zweite an der Stelle 1 usw. Gleichzeitig bestimmt die Reihenfolge in der Child-Liste die Position und Sichtbarkeit der "Kinder" in der endgültigen Ansicht. "Kinder" mit einem niedrigeren Index liegen unter "Kindern" mit einem höheren Index und können von diesen verdeckt werden.
Durch addChildAt wird das untergeordnete Objekt wird an der angegebenen Indexposition eingefügt.
Wenn man eine DisplayObject-Instanz hinzufügt, die bereits einem anderen Anzeigeobjekt-Container untergeordnet worden ist, wird diese aus dessen Child-Liste entfernt. D.h. eine DisplayObject-Instanz kann nur Element einer Child-Liste sein!

removeChild-Methoden:
Durch removeChild(child) wird die angegebene DisplayObject-Instanz child aus der Child-Liste der DisplayObjectContainer-Instanz entfernt.
removeChildAt(index) entfernt ein untergeordnetes Anzeigeobjekt aus der angegebenen index-Position in der Child-Liste.

Nachdem Instanzen zur Child-Liste hinzugefügt wurden, kann man über setChildIndex die Position einer Instanz verändern, über getChildIndex die Position abfragen, über getChildAt die Instanz an einer bestimmten Position ermitteln und über swapChildren bzw. swapChildrenAt die Position zweier Instanzen vertauschen.

Über die Eigenschaft numChildren kann man die Anzahl der Instanzen in der Child-Liste abrufen.
 

Klassen, die von der Klasse DisplayObjectContainer abgeleitet sind:

 

Unmittelbar von der abstrakten Klasse DisplayObjectContainer abgeleitet sind die konkreten Klassen Sprite, Stage und Loader.

Die Unterklasse Sprite ist das Herzstück der Containerklassen und ein Grundbaustein der Anzeigeliste: ein Knoten der Anzeigeliste, der Grafiken anzeigen und auch untergeordnete Objekte enthalten kann.

Die Unterklasse Stage repräsentiert den Hauptzeichenbereich (Bühne). Die Bühne repräsentiert den gesamten Bereich, in dem Flash-Inhalte angezeigt werden. Das ist die Fläche innerhalb der Rahmen des Flash Player-Fensters. In jeder DisplayObject-Instanz kann man über die Eigenschaft stage auf die Bühne zugreifen. Eine andere Möglichkeit, die Bühne anzusprechen, gibt es nicht und es gibt nur EINE Bühne.

Die Unterklasse Loader wird dazu verwendet, SWF- oder Bilddateien (im JPG-, PNG- oder GIF-Format) zu laden. Man verwendet die load-Methode, um den Ladevorgang einzuleiten. Das geladene Anzeigeobjekt wird dem Loader-Objekt als "Kind" untergeordnet. Ein Loader-Container kann nur ein Kindelement, nämlich das geladen wird, enthalten.


Die Klasse MovieClip wird von Sprite abgeleitet und beschreibt (in der Timeline) animierten Content, der in der Flash-Entwicklungsumgebung erstellt und als MovieClip-Symbol abgespeichert wurde. MovieClips unterscheiden sich von Sprites dadurch, dass MovieClips eine Timeline besitzen und entsprechende Mehtoden und Eigenschaften zum Arbeiten mit der Timeline.

Mit der FLVPlayback-Klasse kann man einen Video-Player in die Flash-Anwendung einschließen, um progressiv heruntergeladene Flash Video-Dateien (FLV) über HTTP oder Streaming-FLV-Dateien vom Flash Media Server (FMS) oder einem anderen Flash Video Streaming Service (FVSS) abzuspielen.