Questo è come farei io, ti posto il codice della Document Class.
Se poi vuoi rendere ancora più modulare il tutto, puoi mettere i nomi degli swf da caricare in un XML esterno che ti carichi all'inizio dell'applicazione ... così puoi cambiare i nomi e il numero di banner da caricare esternamente senza aprire Flash.
Cmq vabbè, per ora ti basta editare gli elementi dell'array totalMc.
HolaCodice PHP:package
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class Main extends MovieClip
{
private var loader:Loader;
private var mc:MovieClip;
// questo è il mio array originale dove metterò dentro tutti i nomi dei file swf
// da caricare. Ora cene sono 4, ma ovviamente possono essere quanti tene pare.
private var totalMc:Array=new Array("primo", "secondo", "terzo", "quarto");
// questo invece sarà il mio array copia, che userò per interagire con il random
private var currentMc:Array;
public function Main()
{
init();
}
private function init():void
{
// creo un duplicato di totalMc sul quale posso interagire
// senza modificare l'array originale
currentMc=totalMc.slice();
// chiamo la funzione che carica gli swf esterni, passandogli
// come parametro il nome di uno dei miei swf a caso
loadMc(randomMc());
}
private function randomMc():String
{
// mi creo un indice randomico tenendo conto della length attuale
// del mio array "copia", per avere sempre un indice valido
var randomIndex:int=int(Math.random()*currentMc.length);
// assegno questo nome ad una variabile
var mcName:String=currentMc[randomIndex];
// elimino dal mio array copia l'elemento appena pescato, cosìchè
// non possa essere ripescato in futuro
currentMc.splice(randomIndex, 1);
// ritorno il nome dell'swf da caricare
return mcName;
}
private function loadMc(mcName:String):void
{
// creo un'istanza della classe Loader
loader=new Loader();
// aggiungo il listener che mi segnalerà il completo caricamento del file
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
// carico il file swf randomico, che si troverà nella cartella "banner"
loader.load(new URLRequest("banner/"+mcName+".swf"));
}
private function onComplete(e:Event):void
{
// assegno alla mia variabile mc il contenuto del mio loader
// il casting forzato può essere evitato, io però lo faccio
// per abitudine
mc=e.target.content as MovieClip;
// aggiungo alla display list l'swf caricato
addChild(mc);
// metto un listener EnterFrame che mi controlla ciclicamente
// se l'swf è arrivato alla fine
addEventListener(Event.ENTER_FRAME,checkEnd);
}
private function checkEnd(e:Event):void
{
// controllo se l'swf è arrivato alla fine
if(mc.currentFrame>=mc.totalFrames)
{
// in caso affermativo tolgo l'EnterFrame
removeEventListener(Event.ENTER_FRAME,checkEnd);
// rimuovo dalla display list l'swf e pulisco la variabile mc
removeChild(mc);
mc=null;
// a questo punto controllo la length del mio array copia
if(currentMc.length>0)
{
// se è >0 vuol dire che ci sono swf che non ho mai
// caricato, quindi chiamo nuovamente la funzione
// di caricamento passandogli sempre come parametro
// il nome del file random da caricare
loadMc(randomMc());
}
else
{
// ho caricato sequenzialmente tutti i miei swf,
// a questo punto pulisco il mio array copia e
// ricomincio il ciclo, chiamando la funzione init.
// Se vuoi fare un solo ciclo di elimina l'else.
currentMc=null;
init();
}
}
}
}
}
![]()

Rispondi quotando
