Può capitare di voler importare nei nostri filmati alcuni MovieClip che abbiamo già pubblicato come file .swf
.
Utilizziamo quella che viene definita una "tecnica asincrona di caricamento".
Vediamo quali sono i passi da seguire e poi discutiamo sull'asincronia:
- lanciare una richiesta per il file
.swf
che ci interessa - definire un listener che catturi l'evento dell'avvenuto caricamento
- stabilire che l'azione da compiere una volta completo il caricamento è l'aggiunta del filmato, in modo che ne parta la riproduzione
La tecnica è asincrona per un semplice motivo: non si fanno ipotesi sul tempo necessario al caricamento del filmato, quindi non stabiliamo un momento con il quale sincronizzare la riproduzione.
Chiarito questo, iniziamo a vedere quali elementi di AS3 mettere in campo per portare a termine il lavoro. Anzitutto dobbiamo effettuare una richiesta, per cui ci serviremo ancora della classe URLRequest
e abbiamo capito che ci serve un listener ed un evento, concetti già noti dalle scorse lezioni.
Manca solo un oggetto che assolve la funzione di caricamento: in ActionScript 3 utilizziamo la classe Loader.
Per prima cosa quindi creiamo un nuovo oggetto loader
della classe Loader
.
Creare un nuovo Loader
var loader:Loader = new Loader();
Poi aggiungiamo il listener alla proprietà contentLoaderInfo
. L'evento COMPLETE
viene scatenato alla fine del caricamento e lancia la funzione fineCaricamento
.
Aggiungere un listener per controllare l'evento COMPLETE
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fineCaricamento)
Infine scriviamo la funzione fineCaricamento
che aggiungerà al nostro filmato, quello caricato dall'esterno.
Scrivere il gestore dell'evento
function fineCaricamento(loadEvent:Event) { addChild(loadEvent.currentTarget.content); }
Una volta predisposto tutto possiamo lanciare il caricamento del filmato esterno, utilizzando il metodo load
.
Lanciare il caricamento
loader.load(new URLRequest("bottoni_eventi.swf"))
Naturalmente per caricare un filmato diverso, basta cambiare l'URL nella URLRequest
, sostituendo il nome play e stop.swf
con l'URL del filmato che preferiamo.
Il codice completo risulta:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fineCaricamento)
function fineCaricamento(loadEvent:Event)
{
addChild(loadEvent.currentTarget.content);
}
loader.load(new URLRequest("bottoni_eventi.swf"))
Ecco l'esempio completo.