11.2 Ziele
Hier klicken, um das Bild zu Vergrößern
Abbildung 11.2
Die Ziele in einer Flash-Anwendung
Eine Flash-Anwendung können Sie sich wie einen Baum vorstellen. Jede Astgabel und jedes Blatt wird dabei als Knoten bezeichnet, der wieder aus einer kompletten Flash-Anwendung (SWF-Datei) oder einem Movieclip besteht. Und wenn Sie mit mehreren Stufen arbeiten, dann erhalten Sie einen ganzen Wald aus Bäumen (siehe Abbildung 11.2)!
Um nun diese Knoten – also die einzelnen Movieclips in einer Flash-Anwendung – zu steuern, benötigen Sie einen Weg, Anweisungen zielgerichtet anzugeben. Und um Anweisungen zielgerichtet einzusetzen, müssen Sie zwei Dinge beachten:
|
Wo werden diese Anweisungen aufgerufen? |
|
Auf wen sollen sich diese Anweisungen beziehen? |
11.2.1 Pfade
Anweisungen beziehen sich immer auf die Zeitleiste, in der sie aufgerufen werden. Mit Zeitleiste ist hier ein Movieclip oder eine Flash-Anwendung gemeint (egal ob als Stufe oder in einen Movieclip geladen). Wenn Sie also direkt in Ihrer Anwendung eine Anweisung wie z.B. _visible=false verwenden, dann wird die komplette Flash-Anwendung inklusive aller enthaltenen Elemente unsichtbar. Andere Stufen bleiben davon aber unberührt. Wenn Sie diese Aktion in einem Movieclip platzieren, dann werden nur dieser Movieclip und natürlich alle anderen in ihm liegenden Elemente ausgeblendet. Das heißt, dass der komplette Ast des Baumes ausgehend von dem Knoten, in dem die Aktion liegt, unsichtbar wird.
Um jetzt ein anderes »Ziel« unsichtbar zu machen, benötigen Sie den Pfad zu diesem Ziel. Falls Sie die Aktion direkt in der Anwendung, sozusagen an der Wurzel ausführen, dann ermitteln Sie den Pfad, indem Sie einfach die Kanten bis zum Ziel entlang wandern. Um z. B. den Movieclip c1 zu steuern, benötigen Sie den Pfad a2.b2.c1. Die komplette Aktion lautet dann a2.b2.c1._visible=false. Falls Sie die Aktion aus dem Movieclip a2 heraus auf c1 anwenden möchten, lautet das dann b2.c1._visible=false.
Wenn Sie eine Wirkung von b1 auf a1 erzielen möchten, dann müssen Sie im Baum wieder nach unten wandern. Dies erreichen Sie mit _parent (in der folgenden Tabelle finden Sie einen Vergleich der Schreibweise aus Flash 4 mit der seit Flash 5). Die ganze Aktion lautet dann _parent.visible=false. Um von c2 nach a2 zu kommen, schreiben Sie _parent._parent._visible=false. Falls Sie von a2 nach a1 möchten, würden Sie _parent.a1 als Pfad angeben.
Relative/absolute Pfade
Es gibt aber nicht nur relative, also vom Ausgangspunkt abhängige, sondern auch absolute Pfade. Mit _root wandern Sie z.B. immer direkt in die Wurzel des Baums. Von b3 nach a1 gelangen Sie, indem Sie _parent._parent.a1 oder _root.a1 angeben. Egal von wo aus Sie _root.a1 als Pfad im Baum angeben, Sie erreichen immer den Movieclip mit dem Namen a1 – sofern sich die Aktionen im gleichen Baum, also in der gleichen Stufe befinden.
Bis jetzt bezogen sich alle Aktionen immer nur auf die gleiche Stufe (Level), also den gleichen Baum. Um eine andere Stufe anzusprechen, benötigen Sie ebenfalls absolute Pfade, die mit _level gefolgt von der Nummer des Levels beginnen. Die Aktion _level0._visible z.B. macht den ganzen Baum inklusive aller enthaltenen Movieclips unsichtbar, egal von wo diese Aktion aufgerufen wird. Das funktioniert selbst dann, wenn diese Aktion in einer anderen Flash-Anwendung liegt (solange beide Anwendungen vom gleichen Flash Player abgespielt werden und unter der gleichen Domain liegen). Um z.B. von a3 aus b1 unsichtbar zu machen, schreiben Sie _level0.a1.b1._visible=false.
Wenn Sie Aktionen erstellen, die sich auf den Movieclip beziehen, in dem sie liegen, dann können Sie den Pfad weglassen. Meistens ist es aber besser (zumindest besser zu lesen), wenn Sie anstatt _visible=false die Aktion this._visible=false verwenden. Mit this wird immer eine Referenz auf das Objekt verwaltet, bzgl. derer die Aktion ausgeführt wird.
Tabelle 11.1
Angabe von Zielen in Flash 4 und seit Flash 5
Flash 4
|
seit Flash 5
|
(keine Angabe)
|
this (optional)
|
_level1
|
_level1
|
/
|
_root
|
..
|
_parent
|
pfad/movieclip
|
pfad.movieclip
|
Tell Target
|
With
|
pfad:_eigenschaft
|
pfad._eigenschaft
|
pfad:variable
|
pfad.variable
|
(nicht vorhanden)
|
pfad.methode
|
Set Variable: "variable" = wert
|
Variable=wert
|
GetProperty ( "movieclip", _eigenschaft )
|
movieclip._eigenschaft
|
Set Property ("movieclip", _eigenschaft) = wert
|
movieclip._eigenschaft=wert
|
Wie Flash die Movieclips verwaltet
Alle Objekte inklusive der Movieclips werden intern in Listen verwaltet (ähnlich wie Arrays). Mit ActionScript können Sie so einfach alle Elemente der Anwendung ermitteln. Das folgende Skript z.B. gibt alle Elemente der Hauptzeitleiste (_root) im Ausgabefenster aus, wenn Sie die Anwendung in der Entwicklungsumgebung testen (Steuerung • Film testen):
for (i in _root) {
trace ("Typ:"+typeof _root[i]+" Wert:"+_root[i]);
}
|