Die Object Pfade sind eines der wichtigsten Grundlagen in Flash, durch Ihnen können wir ein Object genau festlegen.
Es lässt sich so genau sagen was man auswählen möchte z.B. dieses Hauses, in dem Haus diesen Raum und in dem Raum den blauen Stuhl.
Inhalt
Jeder MovieClip, Schaltfläche, Textfeld oder VideoObject besitzt einen Object Path mit welchen man auf dieses Object zugreifen kann.
Somit ist es im Normalfall möglich aus einem Unterobject ein anders Unterobject anzusprechen. ES gibt jedoch auch hier ein paar Ausnahmen vor allem dann wenn eine externe Flashdatei geladen wird.
Die Object Pfade werden immer mit . getrennt z.B. _level0.house.room01.chair.blue.

Man unterscheidet in Flash genauso wie in HTML oder in den meisten anderen Programmiersprachen den relativen Pfad und den absoluten Pfad.
Relativer Pfade
Relative Pfade sind von der Zeitleiste abhängig in welcher sich das Object befindet.
Ein Object in _level2. kann über einen relativen Path nicht auf ein Object in _level3. zugreifen.
Das ist in etwas zu vergleichen mit Webseiten und verschiedenen Domains, eine Webseite A kann auch nicht über relative Pfadangaben auf Grafiken oder andere Elemente von Webseite B zugreifen.
Mit this. wird auf die aktuelle Zeitleiste zugegriffen wobei mit _parent. auf die übergeordnete Zeitleiste zugegriffen wird.
Es ist auch möglich _parent. mehrmals hintereinander zu verwenden um in der Hierarchie jeweils eine weiter Stufe höher zu kommen z.B. _parent._parent..
Jedoch ist es wie vorher erwähnt nicht möglich hiermit eine andere _level Ebene zu erreichen.
In der obersten möglichen Stufe ist _parent. nicht definiert, versucht man also ein Object zu erreichen und merkt das _parent. nichts zurück liefert so hat man die oberste Zeitleiste erreicht.
Da es ein wenig kompliziert ist, dies auf Anhieb zu verstehen anbei einige Beispiele welche dies genauer erklären sollen.
Beispiel mit this.
In der Grafik oben hat das Object Chair einen Bereich, gehen wir davon aus, das wir uns innerhalb dieses Objects befinden.
Somit hat das Object wo wir uns befinden den relativen Pfad this, wenn ich nun das Object red ansprechen möchte, müsste ich this.red verwenden.
Ein weiteres Beispiel wäre, wenn wir davon ausgehen, das wir uns im Object House befinden, dann sieht der entsprechende Pfad this.room01.chair.red wieder ganz anders aus.
Beispiel mit _parent.
Gehen wir wieder davon aus, das wir uns im Object Chair befinden. Wenn wir nun das Object Table erreichen wollen, so ist parent die einfachste Möglichkeit.
_parent.table lässt uns eine Ebene höher gehen, damit wird das Object Table erreichen können.
Wenn wir nun Room02 erreichen wollen, so müssen wir hier 2 Ebene höher gehen _parent._parent.room02.
Anwendungsbeispiel
Relative Pathangaben haben den Vorteil, das man ein oder mehrere Objecte ansprechen kann ohne deren Namen zu kennen.
Es kann sein das man das umgebende Object ändern muss ohne das man dessen Namen kennt z.B. wenn man ein Object vergrößert.
Es würde auch keinen Sinn machen einen Ball größer aufpumpen als den Raum in dem sich der Ball befindet.
onClipEvent (load) {
_parent._xscale = 150;
_parent._yscale = 150;
}
Dieses Actionscript vergrößert also das Object in dem sich ein Object befindet um 150%.
Absolute Pfade
Absolute Pfade beginnen immer mit den Namen der Stufe auf der das Dokument geladen ist. Hierbei wird _root. verwendet um auf die oberste Zeitleiste der aktuellen Stufe zu verweisen.
Dies ist nicht zu verwechseln mit _level0. welches die Stufe an sich angibt, der Artikel /actionscript/grundlagen/_level0-vs-_root/ beschäftigt sich hierbei genauer mit den Unterschieden.
Das erste Dokument was geladen wird, hat automatisch die Stufe 0 also _level0., jedes weitere Dokument hätte einer höhere Nummer so hat das 2. Dokument _level1..
Variablen die per FlashVars übergeben werden, sind somit immer nur auf der Stufe 0 bzw. _level0. verfügbar.
Wenn die Stufe bekannt ist, kann man hiermit Objecte aus verschiedenen Dokumente ansprechen, dies ist bei relativen Pfadangaben nicht möglich.
Beispiel mit _level
Bei absoluten Pfadangaben ist es relative egal wo man sich befindet bis auf die Ausnahme _root..
Will man nun beispielsweise den Chair - red ansprechen so kann man dies mit _level0.house.room01.chair.red machen.
Man kann aber nun auch das Bookcase ansprechen _level1.bookcase, das eigentlich ein einer anderen Stufe liegt.
Beispiel mit _root
Bei _root. ist es wichtig das man sich in der richtigen Stufe befindet. Ist man in Stufe 1 _level1. wird ein _root.house einen Fehler verursachen, wobei ein _root.picture oder _root.bookcase keine Fehlermeldung erzeugen würde.
Man muss also genau aufpassen wo man sich befindet damit man _root. sinvoll nutzen kann.
Hinweis
Grundsätzlich sollte es vermieden werden _root. zu verwenden, da wie gesagt _root. immer abhängig von der Stufe ist, in welcher sich das Object befindet.
Somit kann es zu Problemen kommen wenn dieses Object in ein anderes Object geladen wird und sich dadurch die Stufe ändert.
Es sollte also anstatt _root. lieber relative Pfadangaben verwendet werden oder aber _level Angaben, wobei es hier auch zu Problemen kommen kann wenn sich die Ladereihenfolge ändert.
Solange man im Flash Editor arbeitet kann man mit Hilfe des "Target Tool" recht einfach den Object Pfad bestimmen.
Das Tool befindet sich im ActionScript Editor und ist erinnert vom Symbol her an einen Zielsucher.

Hier hat man dann die Auswahl zwischen relativen Pfad und absoluter Pfad Angabe, der entsprechende Path wird oben angezeigt und kann direkt in das ActionScript eingefügt werden.

Das Tool erleichtert einem sehr dem Umgang um auch verschachtelte Objecte zuzugreifen, jedoch sollte man sich vorher auch hier überlegen ob man relative Pfade oder absolute Pfade verwendet.
Bei relativen Pathangaben, geht das Tool immer von dem Object aus, in dem man sich gerade befindet.

