codice:
/**********************************
* FASI COMUNI
* [ dichiarazioni vars e costanti ]
**********************************/
// il file mySWF.swf si trovera' nella stessa cartella di questo file
// mi trovo nel primo keyframe di questo filmato, apro il pannello delle action e comincio a scrivere ...

stop(); // mi assicuro che la timeline sia ferma in questo punto dello stage attuale
// [ superfluo, abitudine ]


// ora mi creo un paio di variabili stringa per definire eventuale folder e nome file da caricare ... 
var path:String = new String(""); // specifico la folder ... 
var swfName:String = new String(path+"mySWF.swf"); // ... e il nome del mio swf


// mi creo un campo di testo dinamico da utilizzare
// come debugger per inserire l'accaduto durante, prima e dopo ... 
// creo un campo di testo dinamico
// con nome istanza debug_txt
this.createTextField("debug_txt", 1, 0, 0, 1, 1); 
this["debug_txt"].autoSize = true; // lo rendo autosizzante
this["debug_txt"].html = true; // gli abilito l' html ...


// ... e creo lo stile ...
var myFormat:TextFormat = new TextFormat(); // istanzio la mia variabile di tipo TextFormat
myFormat.font = "Verdana"; // assegno l 'attributo font
myFormat.size = 10; // l'attributo size
myFormat.color = 0x000000; // l' attributo color 


// ora mi creo una variabile che popolero' di informazioni durante le mie prove ... 
var globalStatus:String = new String();
// in MX 2004 preferisco abituarmi ad instanziare in questo modo
// utile quando si ha a che fare con le classi in AS2.0
/********************************/



/**********************************
* FUNZIONI UTILI
* [ dichiarazioni funzioni ]
**********************************/
// adesso voglio creare una funzione che una volta richiamata
// mi popola di testo passato il campo dinamico creato in precedenza
function accaduto(campo:TextField, testo:String, formattazione:TextFormat) {
	campo.htmlText = testo;
	campo.setTextFormat(formattazione); 
}
/********************************/



/**********************************
* CREAZIONE DATI E CARICAMENTO
* [ gestione layout ed eventi ]
**********************************/

var myLoadedMovie:MovieClipLoader = new MovieClipLoader(); // creo il MovieClip loader
var MovieListner:Object = new Object(); // creo l'oggetto listner per myLoadedMovie

// onLoadStart
MovieListner.onLoadStart = function (target_mc)  {
	// comincio a popolare la variabile con gli avvenimenti ...
	globalStatus = "Inizio caricamento di " + target_mc + "\n";
	
	// e ci metto dentro anche il "misterioso" getProgress()
	var loadProgress:Object = new Object(myLoadedMovie.getProgress(target_mc));
	globalStatus += "Bytes caricati all' avvio: " + loadProgress.bytesLoaded + "\n";
	globalStatus += "Bytes totali all' avvio: " + loadProgress.bytesTotal + "\n";
}

// onLoadProgress
MovieListner.onLoadProgress = function (target_mc, loadedBytes, totalBytes) {
	// mostro in fase di caricamento il mio preload
	// senza Math.round, vars car e tot e le solite cosa insomma ...
	var caricamento = "Totale bytes caricati: " + loadedBytes + "\n";
	caricamento += "Totale bytes da caricare: " + totalBytes + "\n \n";
	// facile no ?
	

	// pero' voglio testare anche le differenze
	//con progress ( notabili solo con files compressi ... )
	var loadProgress:Object = new Object(myLoadedMovie.getProgress(target_mc));
	caricamento += "Totale bytes PROGRESS da caricare: " + loadProgress.bytesLoaded + "\n";
	caricamento += "Totale bytes PROGRESS totali: " + loadProgress.bytesTotal + "\n";
	
	// e leggere quanto appena richiesto ... 
	accaduto(debug_txt, caricamento, myFormat);
}

// onLoadComplete
MovieListner.onLoadComplete = function (target_mc) {
	// posso scrivere 100% grosso quanto una casa ma mi conviene aspettare a fare settaggi ... 
	globalStatus += "Il file " + target_mc + " e' pronto per essere inizializzato.\n";
}

// onLoadInit
MovieListner.onLoadInit = function (target_mc) {
	// perche' e' in questo momento che andro' a farli ...
	target_mc._alpha = 50;
	target_mc._x = Stage.width - target_mc._width;
	globalStatus += "Inizializzazione " + target_mc + " completata.\n";
	
	// fino a togliere la scritta dey bytes e metterci tute le info raccolte fin'ora
	accaduto(debug_txt, globalStatus, myFormat);
}

// onLoadError
MovieListner.onLoadError = function (target_mc, errorCode) {
	// oppure rinunciare a caricare, spiegando il motivo ..
	globalStatus += "Impossibile caricare questo file: " + target_mc + "\n";
	globalStatus += "[ " + errorCode + " ]\n";
	accaduto(debug_txt, globalStatus, myFormat);

	// e svuotando quanto resta dell' ormai inutile MovieClip di target
	myLoadedMovie.unloadClip(target_mc);
}



// dopo aver dichiarato i vari eventi del listner, associo quest' ultimo al MovieClipLoader ...  
myLoadedMovie.addListener(MovieListner);


// ... per poi creare qui un MovieClip
// con nome istanza myMove e depth 10 che andro' ad utilizzare come target
this.createEmptyMovieClip("myMove", 10);

// e passare le variabili create all' inizio per caricare il mio file ... 
myLoadedMovie.loadClip(path+swfName, this["myMove"]); // .. con this["myMove"] per target