18.2 Externe Filme in MovieClips laden
Meistens ist es unpraktisch, dass ein externer Film auf einer eigenen Ebene landet. Die elegantere Lösung besteht darin, den externen Film in einen MovieClip zu laden:
loadMovie("extern.swf",_root.movieclip_mc);
In diesem Fall landet der externe Film genau auf der Ebene in der Zeitleiste oder auf der Tiefe des MovieClips, der ihn aufnimmt. Alternativ können Sie den MovieClip, in den Sie den externen Film laden möchten, auch vor loadMovie() adressieren statt ihn als Ziel anzugeben:
_root.movieclip_mc.loadMovie("extern.swf");
Wie Sie mit externen Filmen in MovieClips arbeiten, zeigen wir Ihnen anhand eines Beispiels. Ausgangspunkt ist die Datei externefilme.fla auf der CD-ROM. Sie besteht aus drei Schaltflächen auf der rechten Seite, die zwischen verschiedenen Textilienarten durchschalten sollen. Auf der linken Seite befindet sich das Produktfenster, in das Sie die externen SWF-Filme für die einzelnen Textilien hineinladen.
Abbildung 18.2 In das Produktfenster auf der linken Seite sollen Kleidungsstücke geladen werden.
Unter dem Produktfenster finden Sie eine Schaltfläche. Sie soll die Ansicht der Kleidungsstücke von Vorder- zu Rückansicht und umgekehrt wechseln. Der Trick dabei: Beide Zustände sind in den externen SWF-Filmen hose.swf, langarm.swf und shirt.swf hinterlegt.
Schritt für Schritt: Mit externen Filmen arbeiten
Der Code für dieses Beispiel landet komplett im ersten Schlüsselbild des Hauptfilms auf der Ebene ActionScript.
Erstellen Sie einen neuen, leeren MovieClip:
this.createEmptyMovieClip("produktcontainer_mc", 1); produktcontainer_mc._x = 38; produktcontainer_mc._y = 90;
Dieser MovieClip ist der Container für die externe SWF-Datei. Sie platzieren ihn gleich an der richtigen Stelle und legen ihn auf Tiefe 1.
Für die erste Schaltfläche laden Sie den externen Film shirt.swf:
produktwahl1_btn.onRelease = function() { produktcontainer_mc.loadMovie("shirt.swf"); };
Die zweite Ereignisprozedur für die Schaltfläche lädt die Langarm-Variante des T-Shirts (langarm.swf):
produktwahl2_btn.onRelease = function() { produktcontainer_mc.loadMovie("langarm.swf"); };
Der dritte Film hose.swf wird geladen:
produktwahl3_btn.onRelease = function() { produktcontainer_mc.loadMovie("hose.swf"); };
Um die Ansicht des geladenen Films zu ändern, müssen Sie auf die Zeitleiste des geladenen externen Films zugreifen:
ansicht_btn.onRelease = function() { _root.produktcontainer_mc.nextFrame(); };
Abbildung 18.3 Der externe Film mit dem Produkt erscheint, Vorder- und Rückansicht lassen sich einfach wechseln.
Die fertige Datei auf der CD-ROM trägt den Namen externefilme_AS2.fla bzw. externefilme_AS1.fla. Statt nur die Ansicht zu wechseln, können Sie natürlich auch andere Einstellungen in den geladenen Filmen verändern. Wie wäre es beispielsweise mit unterschiedlich farbigen T-Shirts oder verschiedenen Größen?
Externen Film aus MovieClip entfernen
Um den MovieClip wieder zu leeren, verwenden Sie die Methode unloadMovie() der MovieClip-Klasse:
_root.movieclip_mc.unloadMovie();
Vorsicht, auch hier gilt: Bevor der Film nicht geladen ist, kann er nicht entfernt werden.
_lockroot im Hauptfilm
Für einen externen Film, den Sie in einen MovieClip laden, können Sie die aus dem letzten Abschnitt bekannte Eigenschaft _lockroot auch direkt einsetzen; damit erlauben Sie die absolute Adressierung in dem externen Film:
loadMovie("extern.swf",_root.movieclip_mc);
_root.movieclip_mc._lockroot = true;
Übergeordnete MovieClips sind davon nicht betroffen; für sie ist die Hauptzeitleiste des Hauptfilms das Wurzelelement (_root).
Ladevorgang überwachen
In Flash 8 und MX 2004 gibt es eine eigene Klasse namens MovieClipLoader. Sie ermöglicht Ihnen externe Filme zu laden. Aber nicht nur das, sie definiert außerdem Ereignisse, mit denen Sie den Ladevorgang exakt überwachen können. Sie finden die Klasse im Aktionen-Bedienfeld unter Integrierte Klassen • Film.
Und so setzen Sie die Klasse ein:
Abbildung 18.4 Die Klasse MovieClipLoader hilft Ihnen, externe Filme mit mehr Kontrolle zu laden.
1. | Sie erstellen ein neues MovieClipLoader-Objekt: |
var lader:MovieClipLoader = new MovieClipLoader();
2. | Mit der Methode loadClip(Film, Ziel)loadClip() (Methode) laden Sie den externen Film entweder auf ein Level oder in einen MovieClip: |
lader.loadClip("extern.swf", _root.movieclip_mc);
3. | Zur Überwachung können Sie Event-Event-Listenerfür MovieClipLoaderListener definieren; die zugehörigen Ereignisse finden Sie im Aktionen-Bedienfeld. Das folgende Beispiel verwendet onLoadComplete (Ereignisprozedur)loadClip (Ereignis)onLoadComplete und erhält damit den Zeitpunkt, an dem der Film geladen wurde. Eine einfache Meldung erscheint im Ausgabe-Fenster: |
var eventListener_obj:Object = new Object(); eventListener_obj.onLoadComplete = function() { trace("Externer Film ist geladen"); }; lader.addListener(eventListener_obj);
-
- Statt der einfachen Ausgabe können Sie den Zustand, nämlich dass der Film geladen wurde, natürlich auch in eine Variable speichern und weiterverwenden. Oftmals bietet sich eine Überprüfung an, bei der bestimmte Anweisungen erst ausgeführt werden, wenn der externe Film bereits geladen ist.
Event-Listener |
Ein Event-Listener wartet, bis ein bestimmtes Ereignis eintritt, beispielsweise das Drücken einer Taste. Diese Art zu programmieren, hat in Flash 8 und MX 2004 verstärkt Einzug gehalten. Eine ausführliche Erklärung finden Sie in Kapitel 9, »Tasten«, und dort im Abschnitt »Event-Listener«. |
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.