Caricamento di un file SWF esterno

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

In ActionScript 3.0, i file SWF vengono caricati mediante la classe Loader. Per caricare un file SWF esterno, il codice ActionScript deve eseguire quattro operazioni:

  1. Creare un nuovo oggetto URLRequest con l'url del file.

  2. Creare un nuovo oggetto Loader.

  3. Chiamare il metodo load() dell'oggetto Loader, passando l'istanza URLRequest come parametro.

  4. Chiamare il metodo addChild() su un contenitore di un oggetto di visualizzazione (ad esempio, la linea temporale principale di un documento Flash) per aggiungere l'istanza Loader all'elenco di visualizzazione.

Il codice dovrebbe essere simile al seguente:

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

Questo stesso codice può essere utilizzato per caricare un file di immagine esterno (JPEG, GIF o PNG) specificando l'url del file di immagine anziché quello di un file SWF. Un file SWF, a differenza di un file di immagine, può contenere codice ActionScript. Pertanto, benché il processo di caricamento di un file SWF sia identico al caricamento di un'immagine, quando caricate un file SWF esterno, sia il file SWF che effettua il caricamento che il file SWF che viene caricato devono trovarsi all'interno della stessa funzione di sicurezza sandbox se il file SWF viene riprodotto da Flash Player or AIR e prevedete di utilizzare ActionScript per comunicare in qualche modo con il file SWF esterno. Inoltre, se il file SWF esterno contiene delle classi che condividono lo stesso spazio dei nomi delle classi nel file SWF in fase di caricamento, può essere necessario creare un nuovo dominio applicazione per il file SWF caricato per evitare eventuali conflitti tra gli spazi dei nomi. Per ulteriori informazioni su considerazioni relative a sicurezza e dominio applicazione, vedete Operazioni con i domini applicazione e Caricamento di contenuto.

Quando il file SWF esterno è stato caricato correttamente, è possibile accedervi mediante la proprietà Loader.content. Se il file SWF esterno è pubblicato per ActionScript 3.0, si tratterà di un clip filmato o di uno sprite, a seconda della classe che estende.

Caricare un file SWF in Adobe AIR for iOS è diverso rispetto al caricamento su altre piattaforme. Per maggiori informazioni, consultate Caricamento di file SWF in AIR per iOS.

Considerazioni sul caricamento di un file SWF di una versione precedente

Se il file SWF esterno è stato pubblicato con una versione precedente di ActionScript, dovete tenere conto di alcune importanti limitazioni. A differenza di un file SWF di ActionScript 3.0 che viene eseguito in AVM2 (ActionScript Virtual Machine 2), un file SWF pubblicato per ActionScript 1.0 o 2.0 viene eseguito in AVM1 (ActionScript Virtual Machine 1).

Esistono differenze importanti quando si carica un file SWF di ActionScript 1.0 o 1.0 in un file SWF di ActionScript 3.0 (rispetto al caricamento di un file SWF di ActionScript 3.0). Flash Player garantisce la totale compatibilità retroattiva con il contenuto pubblicato esistente. Qualsiasi contenuto eseguibile in versioni precedenti di Flash Player può essere eseguito nelle versioni di Flash Player che supportano ActionScript 3.0. Tuttavia, sono valide le limitazioni seguenti:

  • Il codice ActionScript 3.0 può caricare un file SWF scritto in ActionScript 1.0 o 2.0. Quando un file SWF di ActionScript 1.0 o 2.0 viene correttamente caricato, l'oggetto caricato (la proprietà Loader.content) è un oggetto AVM1Movie. Un'istanza AVM1Movie è diversa da un'istanza MovieClip. Si tratta di un oggetto di visualizzazione ma, a differenza di un clip filmato, non include metodi o proprietà correlati alle linee temporali. Il file SWF di AVM2 principale non può accedere alle proprietà, ai metodi o agli oggetti dell'oggetto AVM1Movie caricato.

  • I file SWF scritti in ActionScript 1.0 o 2.0 non consentono di caricare file SWF scritti in ActionScript 3.0. Questo significa che i file SWF creati in Flash 8 o Flex Builder 1.5 o versioni precedenti non consentono di caricare file SWF di ActionScript 3.0.

    L'unica eccezione a questa regola è rappresentata dalla possibilità di sostituire un file SWF di ActionScript 2.0 con un file SWF di ActionScript 3.0, a condizione che non sia stato ancora caricato nulla in nessuno dei livelli del file SWF di ActionScript 2.0. Questa operazione è possibile includendo nel file SWF di ActionScript 2.0 una chiamata a loadMovieNum() e passando il valore 0 al parametro level.

  • In generale, i file SWF scritti in ActionScript 1.0 o 2.0 devono essere migrati se devono essere utilizzati insieme a file SWF scritti in ActionScript 3.0. Ad esempio, se per ipotesi avete creato un lettore multimediale utilizzando ActionScript 2.0, questo consente di caricare vari tipi di contenuto anche questi creati utilizzando ActionScript 2.0. Non potete creare nuovo contenuto in ActionScript 3.0 e caricarlo nel lettore multimediale. Per poter eseguire questo tipo di operazione, occorre effettuare la migrazione del lettore ad ActionScript 3.0.

    Al contrario, un lettore multimediale creato in ActionScript 3.0 è in grado di caricare contenuto ActionScript 2.0.

Nella tabella seguente vengono descritte le limitazioni relative al caricamento di nuovo contenuto e all'esecuzione del codice nelle versioni precedenti di Flash Player, nonché quelle relative allo scambio di script (cross-scripting) tra file SWF scritti in versioni diverse di ActionScript.

Funzionalità supportata

Flash Player 7

Flash Player 8

Flash Player 9 e 10

Può caricare file SWF pubblicati per

7 e versioni precedenti

8 e versioni precedenti

9 (o 10) e versioni precedenti

Contiene questa AVM

AVM1

AVM1

AVM1 e AVM2

Esegue i file SWF scritti in ActionScript

1.0 e 2.0

1.0 e 2.0

1.0, 2.0 e 3.0

Nella seguente tabella, “Funzionalità supportata” fa riferimento al contenuto eseguito in Flash Player 9 o versioni successive. Il contenuto eseguito in Flash Player 8 o versioni precedenti può caricare, visualizzare, eseguire e scambiare script solo in ActionScript 1.0 e 2.0.

Funzionalità supportata

Contenuto creato in ActionScript 1.0 e 2.0

Contenuto creato in ActionScript 3.0

Può caricare contenuto ed eseguire codice nel contenuto creato in

ActionScript 1.0 e 2.0 soltanto

ActionScript 1.0 e 2.0, e ActionScript 3.0

Può scambiare script con contenuto creato in

ActionScript 1.0 e 2.0 soltanto (ActionScript 3.0 tramite connessione locale)

ActionScript 1.0 e 2.0 tramite LocalConnection.

ActionScript 3.0