Preloaders versión mx2004.

Con flashMX2004 vienen mejoras, entre estos podemos encontrar nuevos objetos útiles como lo es MovieClipLoader.

La idea surgió de un solicitud de moock donde hablaba de las desventajas que tenían los cargadores, Luego bokel implementó la idea en una clase

la muestra.

a continuación explico un poco el objeto:
MovieClipLoader.addListener()
registra un objeto para recibir notificaciones.
uso
[code]Objeto_mcl.addListener(listenerObj);[/code]
MovieClipLoader.getProgress()
devuelve el número de bytes cargados y total del movieclip cargado con
[code]MovieClipLoader.loadClip()
var objeto = Objeto_mcl.getProgress(targetClip);
trace(objeto.bytesLoaded);
trace(objeto.bytesTotal)[/code]

MovieClipLoader.loadClip()
Carga el archivo ( movieclip o jpg ) pasado con el parámetro 1, en la MovieClip destino (parámetro 2).
uso:
[code]Objeto_mcl.loadClip(url,targetClip)[/code]
MovieClipLoader.removeListener()
Remueve el listener.
forma de uso:
[code]Objeto_mcl.removeListener(listenerObj)[/code]

MovieClipLoader.unloadClip()
Elimina el archivo que ha sido cargado usando MovieClipLoader.loadClip()
uso:
[code]Objeto_mcl.unloadClip(targetClip)[/code]

A este objeto se le pueden suscribir objetos que contentan los siguientes métodos:

listenerObj.onLoadComplete()
Invocado cuando un archivo llamado con MovieClipLoader.loadClip() a terminado su carga.
forma de uso:
[code]listenerObj.onLoadComplete = function (targetClip){
//acciones
}[/code]
listenerObj.onLoadError()
Es invocado cuando ha fallado la carga del archivo llamado con MovieClipLoader.loadClip().
forma de uso :
[code]listenerObj.onLoadError = function (targetClip,error){
//acciones
}[/code]
el error puede ser una de las siguientes cadenas "URLNotFound" or "LoadNeverCompleted".

listenerObj.onLoadInit()
Este es invocado cuando el primer frame del clip cargado ha sido ejecutado.
uso:
[code]listenerObj.onLoadInit = function (targetClip){
//acciones
}[/code]
listenerObj.onLoadProgress()
Se llama cada vez que se han cargado más bytes del archivo.
uso:
[code]listenerObj.onLoadProgress = function (targetClip, bytesLoaded, bytesTotal){
//acciones
}[/code]
listenerObj.onLoadStart()
Se invoca cuando ha iniciado la carga del archivo..
forma de uso:
[code]listenerObj.onLoadStart = function (targetClip){
//acciones.
}[/code]
el ejemplo que vieron arriba tiene un movieclip con linkage id = loader, este contiene un movielcip "barra" , junto con un campo de texto "box" para is mostrando el avance de la carga.

[code]Stage.scaleMode = "noScale";
//recibe bytes devuleve kb
function bytes2kb(val:Number):Number{
return Math.round(val/1024)
}
//holder para el contenido.
createEmptyMovieClip("holder",1);
//atachamos el preloader.
attachMovie("loader","loader",2,{_x:125,_y:150});
loader.box.autoSize = "right";
loader.barra._xscale = 1;
//objeto mcloader
my_mcl = new MovieClipLoader();
//listener
my_mcl_listener = new Object();
//callback para cuando empieze la carga
my_mcl_listener.onLoadStart = function(t){
trace("inicia carga");
t._visible = false;
}
//callback cada vez que se cargue algo
my_mcl_listener.onLoadProgress = function (t,bl,bt){
var p:Number = (bl / bt) * 100
loader.box.text = "cargados:" + bytes2kb(bl) + " de " +
bytes2kb(bt) + " KB";
loader.barra._xscale = p;
}
//callback en caso de error
my_mcl_listener.onLoadError = function (t,ec){
trace("ups! error " + ec)
loader.box.text = ec;
}
//callback para cuando se termina la carga.
my_mcl_listener.onLoadComplete = function(t){
loader._visible = false;
t._visible = true;
trace("fin de la carga.";);
}
//agregamos el listener al mcloader
my_mcl.addListener(my_mcl_listener);
//cargamos la imagen.
my_mcl.loadClip("saltilloSunset.jpg",holder);
stop();[/code]

y el .zip

saludillos.

8 Comments

Zárate said:

Kada, que version del playes hace falta para visualizar o de arriba?? Tengo Mozilla Firebird con player 7,0,14,0 y no lo puedo ver :(

boulderflash said:

ops
los links te salieron mal, se agregaron a la url de esta página

boulderflash said:

anda que bokel, como se lo curra ;D

kada said:

fixed.
es version 7.014
lo que pasa esque estoy arreglando lo de desplegar codigo en el blog pero como que no me salió,=D

kada

JOHNMARTIN said:

Alguien sabe como manejar esto de los progressbar & loader components respecto a su exagerado peso (kb+)?
El solo ponerlos en scene me pesa 32kb, lo que casi me sugiere poner un prealoder a los preloader components ... ja !

JOHNMARTIN

dano said:

En eso tiene razon johnmartin, con solo poner cualquiera de los componentes no solo el loader sino cualquiera de los mx 2004 sube el peso del swf a 34 kb, cosa que no pasaba con el mx

maltos said:

Solo comentarles algo, los preloaders para archivos swf o jpg no funcionan en el modo de depuracion de flash mx 2004. Otra cosa que veo es que el modo de depuracion de flash mx 2004 al igual que los anteriores hace caso omiso del cache y necesita precargar el swf que contenga algun shared symbol aunque este ya haya sido precargado mediante el MCL o una precarga comun.

Macromedia avanzo con esta clase pero aun hay errores que pulir, en cualquier caso les recomiendo utilizar Web Speed Simulator www.xat.com que funciona como un simulador de descarga a velocidad que uds le indiquen, puede usarse en conjunto con apache (pero tambien tira el mismo error que les comento con los shared symbols de la libreria).

fabian said:

hice un swf que ya contenga la imagen y luego el loader y el problema que tengo es que no me aparece el 0 al 100 porciento solo la imagen y luego ya cargada cual es el problema porfavor a mi email gracias!