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.

Det finns ett antal skillnader mellan inläsning av en SWF-fil i Adobe AIR for iOS jämfört med andra plattformar. Du hittar mer information i Läsa in SWF-filer i AIR for iOS.

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