Läsa in extern SWF-fil

Flash Player 9 och senare, Adobe AIR 1.0 och senare

I ActionScript 3.0 läses SWF-filer in med klassen Loader. För att läsa in en extern SWF-fil, måste ActionScript göra fyra saker:

  1. Skapa ett nytt URLRequest-objekt med filens URL.

  2. Skapa ett nytt Loader-objekt.

  3. Anropa load()-metoden för Loader-objektet och överföra URLRequest-instansen som en parameter.

  4. Anropa addChild()-metoden för en visningsobjektbehållare (t.ex. som huvudtidslinjen i ett Flash-dokument) för att lägga till Loader-instansen i visningslistan.

Koden bör slutligen se ut så här:

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

Samma kod kan användas för att läsa in en extern bildfil som en JPEG-, GIF- eller PNG-bild genom att ange bildfilens URL i stället för SWF-filens URL. En SWF-fil kan, till skillnad från en bildfil, innehålla ActionScript. När du läser in en extern SWF-fil måste därför både den inläsande SWF-filen och SWF-filen som läses in finnas i samma säkerhetssandlåda om Flash Player eller AIR spelar SWF-filen, även om processen att läsa in en SWF-fil kan vara identisk med inläsningen av en bild, om du planerar att använda ActionScript för kommunikation med den externa SWF-filen. Dessutom, om den externa SWF-filen innehåller klasser som delar samma namnutrymme som klasserna i den inläsande SWF-filen, kanske du måste skapa en ny programdomän för den inlästa SWF-filen för att undvika namnutrymmeskonflikter. Mer information om säkerhet och programdomäner finns i Arbeta med programdomäner och Inläsning av innehåll.

När den externa SWF-filen har lästs in, kan den nås via egenskapen Loader.content. Om den externa SWF-filen publiceras för ActionScript 3.0, kommer den att vara antingen ett filmklipp eller en sprite, beroende på vilken klass den utökar.

Beaktanden för inläsning av äldre SWF-fil

Om den externa SWF-filen har publicerats med en äldre version av ActionScript, måste du ta hänsyn till viktiga begränsningar. Till skillnad från en ActionScript 3.0-SWF-fil som körs på AVM2 (ActionScript Virtual Machine 2), körs en SWF-fil som publicerats för ActionScript 1.0 eller 2.0 på AVM1 (ActionScript Virtual Machine 1).

Det finns viktiga skillnader mellan inläsning av en SWF-fil i ActionScript 1.0 eller 2.0-format till ActionScript 3.0-format (jämfört med inläsning av en SWF-fil i ActionScript 3.0). Flash Player är fullständig bakåtkompatibel med tidigare publicerat innehåll. Allt innehåll för tidigare versioner av Flash Player fungerar även i de Flash Player-versioner som har stöd för ActionScript 3.0, men med följande begränsningar:

  • ActionScript 3.0-kod kan läsa in en SWF-fil som skrivits i ActionScript 1.0 eller 2.0. När en SWF-fil som skapats med ActionScript 1.0 eller 2.0 läses in felfritt är det inlästa objektet (egenskapen Loader.content) ett AVM1Movie-objekt. En AVM1Movie-instans är inte detsamma som en MovieClip-instans. Den är ett visningsobjekt, men till skillnad från ett filmklipp ingår inte tidslinjerelaterade metoder eller egenskaper. Den överordnade AVM2-SWF-filen kan inte komma åt egenskaperna, metoderna eller objekten i det inlästa AVM1Movie-objektet.

  • SWF-filer som skrivits i ActionScript 1.0 eller 2.0 kan inte läsa in SWF-filer som skrivits i ActionScript 3.0. Det betyder att SWF-filer som redigerats i Flash 8, Flex Builder 1.5 eller tidigare versioner inte kan läsa in SWF-filer från ActionScript 3.0.

    Det enda undantaget är att en SWF-fil från ActionScript 2.0 kan ersätta sig själv med en SWF-fil från ActionScript 3.0, så länge som filen från ActionScript 2.0 inte har läst in någonting på sina nivåer. En SWF-fil från ActionScript 2.0 kan göra detta via ett anrop till loadMovieNum(), och överför då värdet 0 till parametern level.

  • I allmänhet måste SWF-filer som skrivits i ActionScript 1.0 eller 2.0 flyttas om de ska fungera tillsammans med SWF-filer som skrivits i ActionScript 3.0. Låt oss anta att du skapat en mediaspelare med ActionScript 2.0. Mediaspelaren läser in blandat innehåll, som också skapats med ActionScript 2.0. Du kan inte skapa nytt innehåll i ActionScript 3.0 och läsa in det i mediaspelaren. Du måste flytta videospelaren till ActionScript 3.0.

    Om du emellertid skapar en mediaspelare i ActionScript 3.0, kan denna spelare utföra enstaka inläsningar av ditt ActionScript 2.0-innehåll.

I följande tabeller sammanfattas begränsningarna i tidigare versioner av Flash Player när det gäller att läsa in nyare innehåll och köra koder, men också begränsningarna för korsskriptning mellan SWF-filer som skrivits i olika versioner av ActionScript.

Funktioner som stöds

Flash Player 7

Flash Player 8

Flash Player 9 och 10

Kan läsa in SWF-filer som publicerats för

7 och tidigare

8 och tidigare

9 (eller 10) och tidigare

Innehåller detta AVM

AVM1

AVM1

AVM1 och AVM2

Kör SWF-filer som skrivits i ActionScript

1.0 och 2.0

1.0 och 2.0

1.0 och 2.0 samt 3.0

I följande tabell gäller ”Funktioner som stöds” innehåll som körs i Flash Player 9 eller senare. Innehåll som körs i Flash Player 8 eller tidigare kan läsa in, visa, köra och korsskripta bara ActionScript 1.0 och 2.0.

Funktioner som stöds

Innehåll som har skapats i ActionScript 1.0 och 2.0

Innehåll som har skapats i ActionScript 3.0

Kan läsa in innehåll och köra kod i innehåll som skapats i

Endast ActionScript 1.0 och 2.0

ActionScript 1.0 och 2.0 samt ActionScript 3.0

Kan korsskripta innehåll som skapats i

Enbart ActionScript 1.0 och 2.0 (ActionScript 3.0 via lokal anslutning)

ActionScript 1.0 och 2.0 via LocalConnection.

ActionScript 3.0