Laden einer externen SWF-Datei

Flash Player 9 und höher, Adobe AIR 1.0 und höher

In ActionScript 3.0 werden SWF-Dateien mit der Loader-Klasse geladen. Zum Laden einer externen SWF-Datei müssen im ActionScript-Code die folgenden vier Vorgänge durchgeführt werden:

  1. Erstellen eines neuen URLRequest-Objekts mit der URL der Datei

  2. Erstellen eines neuen Loader-Objekts

  3. Aufrufen der load()-Methode des Loader-Objekts und Übergeben der URLRequest-Instanz als Parameter

  4. Aufrufen der addChild()-Methode für einen Anzeigeobjektcontainer (z. B. die Hauptzeitleiste eines Flash-Dokuments) zum Hinzufügen der Loader-Instanz zur Anzeigeliste

Dies ergibt schließlich den folgenden Code:

var request:URLRequest = new URLRequest("http://www.[yourdomain].com/externalSwf.swf"); 
var loader:Loader = new Loader() 
loader.load(request); 
addChild(loader);

Mit dem gleichen Code kann anstelle einer SWF-Datei eine externe Bilddatei (z. B. eine JPEG-, GIF- oder PNG-Datei) geladen werden, indem Sie die URL der Bilddatei angeben. Im Gegensatz zu einer Bilddatei kann eine SWF-Datei ActionScript-Code enthalten. Obwohl eine SWF-Datei wie eine Bilddatei geladen wird, müssen sich beim Laden einer externen SWF-Datei die ladende SWF-Datei und die geladene SWF-Datei in der gleichen Sicherheits-Sandbox befinden, wenn die SWF-Datei von Flash Player oder AIR wiedergegeben wird und Sie mithilfe von ActionScript eine Verbindung mit der externen SWF-Datei herstellen möchten. Wenn die externe SWF-Datei Klassen enthält, die über den gleichen Namespace verfügen wie Klassen in der ladenden SWF-Datei, müssen Sie unter Umständen eine neue Anwendungsdomäne für die geladene SWF-Datei erstellen, damit keine Namespace-Konflikte auftreten. Weitere Informationen zur Sicherheit und zu Anwendungsdomänen finden Sie unter Verwenden von Anwendungsdomänen und Laden von Inhalten.

Wenn die externe SWF-Datei erfolgreich geladen wurde, kann sie über die Loader.content-Eigenschaft aufgerufen werden. Wenn die externe SWF-Datei für ActionScript 3.0 veröffentlicht wird, handelt es sich je nachdem, welche Klasse erweitert wird, um einen Movieclip oder um ein Sprite.

Es bestehen einige Unterschiede zwischen dem Laden einer SWF-Datei in Adobe AIR für iOS und anderen Plattformen. Weitere Informationen finden Sie unter Laden von SWF-Dateien in AIR für iOS.

Hinweise zum Laden älterer SWF-Dateien

Wenn eine externe SWF-Datei mit einer älteren ActionScript-Version veröffentlicht wurde, müssen einige wichtige Beschränkungen beachtet werden. Im Gegensatz zu einer für ActionScript 3.0 veröffentlichten SWF-Datei, die in AVM2 (ActionScript Virtual Machine 2) ausgeführt wird, wird eine für ActionScript 1.0 oder 2.0 veröffentlichte Datei in AVM1 (ActionScript Virtual Machine 1) ausgeführt.

Es gibt wichtige Unterschiede beim Laden einer ActionScript 1.0- oder 2.0-SWF-Datei in eine ActionScript 3.0-SWF-Datei (im Vergleich zum Laden einer ActionScript 3.0-SWF-Datei). Flash Player bietet vollständige Abwärtskompatibilität mit bereits veröffentlichten Inhalten. Inhalt, der in früheren Flash Player-Versionen ausgeführt wird, läuft auch in Flash Player-Versionen, die ActionScript 3.0 unterstützen. Es gelten jedoch die folgenden Einschränkungen:

  • ActionScript 3.0-Code kann eine SWF-Datei laden, die in ActionScript 1.0 oder 2.0 geschrieben wurde. Wenn eine ActionScript 1.0- oder 2.0-SWF-Datei erfolgreich geladen wird, ist das geladene Objekt (die Loader.content-Eigenschaft) ein AVM1Movie-Objekt. Bei einer AVM1Movie-Instanz und einer MovieClip-Instanz handelt es sich um unterschiedliche Instanzen. Eine AVM1Movie-Instanz ist ein Anzeigeobjekt. Im Gegensatz zu einem Movieclip enthält es keine zeitleistenspezifischen Methoden oder Eigenschaften. Die übergeordnete AVM2-SWF-Datei kann nicht auf die Eigenschaften, Methoden oder Objekte des geladenen AVM1Movie-Objekts zugreifen.

  • In ActionScript 1.0 oder 2.0 geschriebene SWF-Dateien können keine in ActionScript 3.0 geschriebenen SWF-Dateie nladen. Dies bedeutet, dass in Flash 8, Flex Builder 1.5 oder älteren Versionen erstellte SWF-Dateien keine mit ActionScript 3.0 erstellten SWF-Dateien laden können.

    Die einzige Ausnahme dieser Regel besteht darin, dass ActionScript 2.0-SWF-Dateien sich selbst durch eine ActionScript 3.0-SWF-Datei ersetzen können, falls zuvor noch keine Daten geladen wurden. Dies ist möglich, wenn die ActionScript 2.0-SWF-Datei loadMovieNum() aufruft und dabei im Parameter level den Wert 0 übergibt.

  • Im Allgemeinen müssen in ActionScript 1.0 oder 2.0 geschriebene SWF-Dateien migriert werden, wenn sie zusammen mit in ActionScript 3.0 geschriebenen SWF-Dateien verwendet werden sollen. Angenommen beispielsweise, Sie haben einen Media Player mit ActionScript 2.0 erstellt. Der Media Player lädt verschiedene Inhalte, die ebenfalls mit ActionScript 2.0 erstellt wurden. Sie können keine neuen Inhalte in ActionScript 3.0 erstellen und diese in den Media Player laden. Dazu müssen Sie den Media Player zu ActionScript 3.0 migrieren.

    Wenn Sie dagegen einen Media Player in ActionScript 3.0 erstellen, kann dieser einfache Ladevorgänge für ActionScript 2.0-Inhalte durchführen.

In den folgenden Tabellen sind die Einschränkungen älterer Versionen von Flash Player bezüglich des Ladens neuerer Inhalte und des Ausführens von Code aufgeführt. Außerdem enthalten sie die Einschränkungen bei der Skriptreferenzierung zwischen SWF-Dateien mit unterschiedlichen ActionScript-Versionen.

Unterstützte Funktionen

Flash Player 7

Flash Player 8

Flash Player 9 und 10

Laden von SWF-Dateien für

7 und früher

8 und früher

9 (oder 10) und früher

Enthält folgende AVM

AVM1

AVM1

AVM1 und AVM2

Ausführen von SWF-Dateien mit ActionScript

1.0 und 2.0

1.0 und 2.0

1.0, 2.0 und 3.0

In der folgenden Tabelle bezieht sich der Ausdruck „Unterstützte Funktionen“ auf Inhalte, die in Flash Player 9 oder höher ausgeführt werden. In Flash Player bis Version 8 ausgeführte Inhalte können nur ActionScript 1.0 und 2.0 laden, anzeigen, ausführen sowie entsprechende Skripts in anderen SWF-Dateien referenzieren.

Unterstützte Funktionen

In ActionScript 1.0 und 2.0 erstellte Inhalte

In ActionScript 3.0 erstellte Inhalte

Laden von Inhalten und Ausführen von Code in Inhalten in

ActionScript 1.0 und 2.0 (ausschließlich)

ActionScript 1.0, 2.0 und ActionScript 3.0

Referenzieren von anderen Skripts in

ActionScript 1.0 und 2.0 (ausschließlich; ActionScript 3.0 über lokale Verbindungen)

ActionScript 1.0 und 2.0 über lokale Verbindungen

ActionScript 3.0