Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/06/2005, 02:19
NoZilop
 
Fecha de Ingreso: mayo-2005
Ubicación: Lima
Mensajes: 160
Antigüedad: 18 años, 11 meses
Puntos: 0
Porque recordar es volver a vivir (loader de dos frames a la antigua)

Viendo como te complicas la vida con el ejemplo que conseguiste (debe ser de la página de la NASA), se me ocurrió desempolvar algun fla que haya hecho con flash 4 o 5, y encontré éste, luego de limpiarlo y darle forma de AS 2.0 aqui está:

Todo el loader va en los dos primeros frames de la primera (o única) escena, cuando el swf cargue totalmente la reproducción continua en el frame 3, si no hay frame tres entonces se sigue con la siguiente escena hasta que se encuentre con un stop();

Esto iria en el segundo frame:

if (_root._totalframes>_root._framesloaded) {
_root.gotoAndPlay (1);
}


no hace falta nada más, eso cumple con el objetivo de un loader (evitar que se inicie la reproducción antes de cargar toda la pelicula en memoria) en otro layer que ocupe esos dos frames pones lo que la gente verá mientras el swf carga.

Ahora si quieres mostrar el progreso con un texto agregas lo siguiente a lo anterior:

_root.progress=_root._framesloaded/_root._totalframes;
_root.textprogress=Math.floor(_root.progress*100)+ " %";


para lo cual debe haber un campo de texto dinamico con la variable "textprogress"

Y si además quieres que haya un indicador gráfico (un barra de progreso)
adicionas:

_root.bar._width=_root.progress*(longitudfinal)

para lo cual debe haber un movie clip instanciado como "bar" digamos de un pixel de ancho, y donde "longitudfinal" es la longitud que quieres que tenga la barra (en pixeles) al llegar al 100%


Para terminar..., el problema con _framesloaded es que al estar en funcion del contenido de los frames, puede no ser adecuado si el contenido no esta uniformemente distribuido (puede ser que la mitad de todo el contenido este en un solo frame) haciendo que el loader muestre picos y estancamientos en el progreso.

Para tener un loader mas regular simplemente en vez de usar _framesloaded y _totalframes usar getBytesLoaded() y getBytesTotal().

Última edición por NoZilop; 07/06/2005 a las 02:51