in realtà il problema è un attimo più articolato, riporto un paragrafo di un articolo che ho scritto recentemente sulla classe MovieLipLoader, per spiegare il problema dei preload tradizionali
[...]la classe MovieClipLoader si occupa di eseguire tutte quelle operazioni di calcolo che fino a Flash 6 eravamo costretti a farci a mano, utilizzando i classici preload, spesso imprecisi e quasi sempre inutili per le funzioni da compiere nel momento in cui il file esterno risultava caricato, ad esempio se utilizzate il seguente script per caricare un'immagine e poi ridimensionarla, nella maggior parte dei casi non riuscirete a farlo:
Codice PHP:
function preload (target) {
var car = target.getBytesLoaded();
var tot = target.getBytesTotal();
if(car == tot){
target._width = 300;
target._height = 300;
clearInterval(a);
}
}
mio_mc.loadMovie("img.jpg");
a = setInterval(preload, 100, mio_mc);
questo perchè effettivamente c'è uno stacco tra il momento in cui l'immagine è stata caricata in flash e il momento in cui quest'immagine è realmente fruibile a livello di codice. Con un normale preload questo lasso di tempo non è calcolato, mentre la classe MovieClipLoader[...]
effettivamente dovrebbe essere possibile risolvere anche con un preload tradizionale, innestando una ulteriore condizione all'interno di quella che "risolve" il preload
Codice PHP:
if (caricati>0 && caricati>=totali){
if(_root.loader1.loader_box._width > 0 && _root.loader1.loader_box._height > 0){
clearInterval(idPreload);
mcWidth = _root.loader1.loader_box._width;
mcHeight = _root.loader1.loader_box._height;
trace("w:" + mcWidth + "h:" + mcHeight )
}
}