devo realizzare una head in flash di un sito, questa head deve caricare degli swf esterni consecutivamente e casualmente; cioè non appena finisce l'esecuzione di un swf ne deve far caricare un altro dei miei 20 scegliendolo in modo casuale, se è possibile una piccola transazione tra un immagine all'altra
ho provato questo codice ma mi cambia l'immagine ad ogni aggiornamento della pagina.
codice:
//impostiamo la larghezza e l'altezza delle immagini
var altezza:Number = 450;
var larghezza:Number = 600;
//definiamo URLLoader per caricare il file XML e il Loader per le immagini.
//NB: URLLoader è "eseguito" quando il costruttore viene chiamato
var xmlLoad:URLLoader = new URLLoader( new URLRequest("ListaImagini.xml") );
var imgLoad:Loader = new Loader();
//e alla fine diciamo a Flash di eseguire la funzione "caricaLista" quando URLLoader ha completato il suo caricamento del file xml,
xmlLoad.addEventListener(Event.COMPLETE, caricaLista);
/*
Nella funzione "caricaLista" otteniamo i dati dall'oggetto URLLoader
e avendo nel file xml diversi tag "contenuto" comunichiamo alla var "stImage" di caricare una random.
Dato che "imgLoad" è un oggetto Loader dobbiamo chiamare il metodo load per caricare l'immagine.
L'ultima riga rimuove il listener di evento associato all'evento "caricaLista".
*/
function caricaLista(evt:Event):void {
var xmlData:XML = XML(xmlLoad.data);
var numImmagini:Number = xmlData.contenuto.length();
var stImage:String = xmlData.contenuto[Math.floor(numImmagini*Math.random())].toString();
imgLoad.contentLoaderInfo.addEventListener(Event.COMPLETE, caricaImmagini);
imgLoad.load( new URLRequest(stImage) );
xmlLoad.removeEventListener(Event.COMPLETE, caricaLista);
}
/*
La funzione "caricaImmagini" inserisce il contenuto del "imgLoad" come un oggetto Bitmap
in modo che possiamo scalarlo prima di aggiungerlo nello stage.
Si noti che usiamo scaleX e scaleY per ridimensionare l'immagine dalle variabili altezza e larghezza,
indipendentemente dalle sue proporzioni originali.
Alla fine aggancio un listener che verifica il fine caricamente è richiama una funzione.
*/
function caricaImmagini(evt:Event):void {
var thisBmp:Bitmap = Bitmap(imgLoad.content);
thisBmp.x = 0;
thisBmp.y = 0;
var thisWidth:Number = thisBmp.width;
var thisHeight:Number = thisBmp.height;
thisBmp.scaleX = larghezza/thisWidth;
thisBmp.scaleY = altezza/thisHeight;
addChild(thisBmp);
imgLoad.contentLoaderInfo.removeEventListener(Event.COMPLETE, caricaImmagini);
}