Een extern SWF-bestand laden

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

SWF-bestanden worden in ActionScript 3.0 geladen met behulp van de klasse Loader. Als u een extern SWF-bestand wilt laden, moet uw ActionScript vier dingen doen:

  1. Een nieuw object URLRequest met de URL van het bestand maken.

  2. Een nieuw object Loader maken.

  3. De methode load() van het object Loader aanroepen en de URLRequest-instantie als parameter doorgeven.

  4. De methode addChild() op een weergaveobjectcontainer (zoals de hoofdtijdlijn van een Flash-document) aanroepen om de Loader-instantie aan het weergaveoverzicht toe te voegen.

De code ziet er uiteindelijk als volgt uit:

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

Dezelfde code kan worden gebruikt om een extern beeldbestand, zoals JPEG, GIF of PNG te laden door de URL van het afbeeldingsbestand in plaats van de URL van een SWF-bestand op te geven. In tegenstelling tot afbeeldingsbestanden, kan een SWF-bestand ActionScript bevatten. Hoewel het proces voor het laden van een SWF-bestand dus hetzelfde is als het proces voor het laden van een afbeelding, moeten bij het laden van een extern SWF-bestand zowel het SWF-bestand dat het laden uitvoert als het SWF-bestand dat wordt geladen, zich in dezelfde beveiligingssandbox bevinden, als Flash Player of AIR het SWF-bestand afspelen en u van plan bent ActionScript te gebruiken om met het externe SWF-bestand te communiceren. Als het externe SWF-bestand daarnaast klassen bevat die dezelfde naamruimte delen als klassen in het ladende SWF-bestand, moet u mogelijk een nieuw toepassingsdomein voor het geladen SWF-bestand maken om naamruimteconflicten te voorkomen. Zie Werken met toepassingsdomeinen en Inhoud laden voor meer informatie over overwegingen met betrekking tot veiligheid en toepassingsdomeinen.

Wanneer het laden van het externe SWF-bestand is voltooid, kunt u het bestand openen via de eigenschap Loader.content. Als het externe SWF-bestand voor ActionScript 3.0 is gepubliceerd, is het een filmclip of een sprite, afhankelijk van de klasse waarvan het bestand een uitbreiding is.

Er zijn een paar verschillen voor het laden van een SWF-bestand in Adobe AIR voor iOS ten opzichte van andere platforms. Zie SWF-bestanden laden in AIR voor iOS voor meer informatie.

Overwegingen bij het laden van een ouder SWF-bestand

Als het externe SWF-bestand is gepubliceerd met een oudere versie van ActionScript, moeten er belangrijke beperkingen in overweging worden genomen. In tegenstelling tot een ActionScript 3.0 SWF-bestand dat wordt uitgevoerd in AVM2 (ActionScript Virtual Machine 2), wordt een SWF-bestand dat is gepubliceerd voor ActionScript 1.0 of 2.0 in AVM1 (ActionScript Virtual Machine 1) uitgevoerd.

Er zijn belangrijke verschillen tussen het laden van een SWF-bestand van ActionScript 1.0 en 2.0 in een SWF-bestand van ActionScript 3.0 en het laden van een SWF-bestand van ActionScript 3.0. Flash Player biedt volledige achterwaartse compabiliteit met vorige gepubliceerde inhoud. Inhoud die in vorige versies van Flash Player kan worden afgespeeld, kan ook worden uitgevoerd in versies van Flash Player die ActionScript 3.0 ondersteunen. De volgende beperkingen zijn van toepassing:

  • ActionScript 3.0-code kan een SWF-bestand laden dat geschreven is in ActionScript 1.0 of 2.0. Wanneer een SWF-bestand van ActionScript 1.0 of 2.0 is geladen, is het geladen object (de eigenschap Loader.Content ) is een AVM1Movie-object. Een AVM1Movie-instantie is niet hetzelfde als een MovieClip-instantie. Het is een weergaveobject, maar in tegenstelling tot een filmclip, bevat dit weergaveobject geen methoden of eigenschappen met betrekking tot een tijdlijn. Het bovenliggende AVM2 SWF-bestand heeft geen toegang tot de eigenschappen, methoden of objecten van het geladen AVM1-filmobject.

  • SWF-bestanden die zijn geschreven in ActionScript 1.0 of 2.0 kunnen geen SWF-bestanden laden die zijn geschreven in ActionScript 3.0. Dit betekent dat SWF-bestanden die zijn gemaakt in Flash 8 of Flex Builder 1.5 of eerdere versies geen ActionScript 3.0 SWF-bestanden kunnen laden.

    De enige uitzondering op deze regel is dat een SWF-bestand van ActionScript 2.0 zichzelf door een SWF-bestand van ActionScript 3.0 kan vervangen, indien het SWF-bestand van ActionScript 2.0 niets eerder in een van zijn niveaus heeft geladen. Een SWF-bestand van ActionScript 2.0 kan dit doen door loadMovieNum() aan te roepen en daarbij een waarde van 0 aan de parameter level door te geven.

  • Over het algemeen moeten SWF-bestanden, die geschreven zijn in ActionScript 1.0 of 2.0, worden gemigreerd als ze samenwerken met SWF-bestanden die geschreven zijn in ActionScript 3.0. U hebt bijvoorbeeld een mediaspeler gemaakt met ActionScript 2.0. De mediaspeler laadt verschillende soorten inhoud die is gemaakt met ActionScript 2.0. U kunt geen nieuwe inhoud maken in ActionScript 3.0 en deze dan laden in de mediaspeler. U moet de mediaspeler naar ActionScript 3.0 migreren.

    Als u echter een mediaspeler in ActionScript 3.0 maakt, kan die mediaspeler uw ActionScript 2.0-inhoud op eenvoudige wijze laden.

In de onderstaande tabellen worden de beperkingen van vorige versies van Flash Player met betrekking tot het laden van nieuwere inhoud en het uitvoeren van code weergegeven. Hier vindt u ook beperkingen voor cross-scripting tussen SWF-bestanden die geschreven zijn in verschillende versies van ActionScript.

Ondersteunde functionaliteit

Flash Player 7

Flash Player 8

Flash Player 9 en 10

Kan SWF-bestanden laden die zijn gepubliceerd voor

7 en eerder

8 en eerder

9 (of 10) of lager

Bevat deze AVM

AVM1

AVM1

AVM1 en AVM2

Voert SWF-bestanden uit die zijn geschreven in ActionScript

1.0 en 2.0

1.0 en 2.0

1.0, 2.0 en 3.0

In de volgende tabel duidt “Ondersteunde functionaliteit” op inhoud die in Flash Player 9 of hoger wordt uitgevoerd. Inhoud die in Flash Player 8 of eerder wordt uitgevoerd, kan alleen ActionScript 1.0 en 2.0 laden, weergeven, uitvoeren en scripts uitwisselen.

Ondersteunde functionaliteit

Inhoud die is gemaakt in ActionScript 1.0 en 2.0

Inhoud die is gemaakt in ActionScript 3.0

Kan inhoud laden en code in inhoud uitvoeren gemaakt in

inhoud die in ActionScript 1.0 en 2.0 is gemaakt

ActionScript 1.0, 2.0 en ActionScript 3.0

Cross-scripting is uitsluitend mogelijk met

Alleen ActionScript 1.0 en 2.0 (ActionScript 3.0 via LocalConnection)

ActionScript 1.0 en 2.0 via LocalConnection.

ActionScript 3.0