Yo tengo un código que hice hace un tiempo que lo mismo te sirve, supongo que habrá otras formas de hacerlo, pero bueno ahí va:
Código:
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void
{
a=Math.ceil(( (bytesLoaded * 100 ) / bytesTotal));
}
listener.onLoadInit = function(target_mc:MovieClip)
{
beginInterval();
}
mcLoader.addListener(listener);
mcLoader.loadClip("indice.swf",clipDestino);
var actual:Number =0;
var a:Number =0;
var intervalId:Number;
var count:Number = 0;
var duration:Number = 50;
function executeCallback():Void {
if(actual<a)
{
//aquí gestianariamos el progreso 'ficticio' de nuestro preloader
actual++;
}
if(actual>=100)
{
//aquí lo que ha de suceder cuando el clip está cargado
clearInterval(intervalId);
}
}
function beginInterval():Void
{
if(intervalId != null)
{
clearInterval(intervalId);
}
intervalId = setInterval(this, "executeCallback", duration);
}
La cosa está básicamente en que tenemos una variable ficticia de porcentage de carga ('actual') que se incrementa desde un intervalo y una variable con el porcentage real de carga del clip.
En el intervalo incrementamos nuestra variable ficticia cuando el porcentage 'ficticio' es menor que el 'real', pero como está en un intervalo pués tenemos la seguridad que tarda en incrementarse una unidad(o las que nosotros decidamos) cada paso del intervalo(o sea cada paso de x milisegundos que hayamos definido en el intervalo)
Si hay parón en la carga no pasaría nada, nuestro intervalo 'se espera' y por tanto nuestra variable ficticia también.
Y nada, tenemos dos 'ifs' uno para cuando el % de carga ficticia es menor que el real y otro para cuando es igual a 100 en cuyo caso el clip estaría cargado.
Se pueden hacer varias cosas, en el onLoadProgress es dónde está la variable que contiene el porcentage de carga, por tanto si por ejemplo te interesase que fuese del 0 a 20 pues usuariamos el porcentage, pero dividido por 5, y en tu intervalo usarías como tope de carga el 20.
Lo digo por si no te interesa que pase 100 veces por el intervalo.
Y bueno, para el intervalo, lo que debes hacer es definir en la variable 'duration' la duración de un paso en milisegundos.
El intervalo se destruye cuando la carga llega al 100%
No sé si te servirá de algo la idea pero ahí queda.
Yo lo use aquí y me funcionó bien(lo que quería era que la barra progresase aunque se hubiese cargado el clip con lo cual la situación debe de ser similar):
http://www.3wservicios.com/vistahermosa/
Salu2 ;)