Foros del Web » Creando para Internet » Flash y Actionscript »

problema con preloader

Estas en el tema de problema con preloader en el foro de Flash y Actionscript en Foros del Web. [QUOTE]hola amigos tengo un preloader en la primera escena y el problema es que la pagina es demasiado pesada y mi precarga se visualiza a ...
  #1 (permalink)  
Antiguo 05/06/2005, 07:42
Avatar de marmol  
Fecha de Ingreso: marzo-2004
Ubicación: en argentina
Mensajes: 197
Antigüedad: 13 años, 8 meses
Puntos: 4
problema con preloader

[QUOTE]hola amigos tengo un preloader en la primera escena
y el problema es que la pagina es demasiado pesada y mi precarga se visualiza a partir del 70 % osea tarda mas de 10 segundos en aparecer,..
MI PREGUNTA ES EMBESDE LA FUNCION getBytesTotal.. se le podria especificar el tamaño total de mi pelicula osea 300 kb...
este es mi codigo

function cargando() {

var total, cargados, porcentaje;
total = _root.getBytesTotal();
cargados = _root.getBytesLoaded();
porcentaje = Math.floor((cargados*100)/total);
porcentaje_txt.text = porcentaje+" %";
barra_mc.gotoAndStop(porcentaje);

if (cargados == total) {
//Hacer que se deje de ejeuctar esta función
clearInterval(hiloPrecarga);
//Iniciar la pelicula
play();
}
}


función
var hiloPrecarga = setInterval(cargando, 1);

stop();

si alguien me puede responder se lo agradeceria
bye
__________________
Fabricante Maquina industriales
http://www.guidobatanmaquinarias.com
  #2 (permalink)  
Antiguo 05/06/2005, 11:49
 
Fecha de Ingreso: mayo-2005
Ubicación: Lima
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 0
Pero, precisamente getBytesTotal devuelve el tamaño total del swf, asi que debe devolverte los 300k que dices. A menos que lo que hayas querido decir es que tienes varios swf que conforman tu pelicula en cuyo caso getBytesTotal solo te devuelve el tamaño de swf que lo llama.

Sobre eso que tu loader aparece recien en el 70%, se debe a que: o tu loader no esta al inicio o en el primer frame junto con el loader estas cargando otros elementos de tu biblioteca. Al inicio solo deberia estar el loader y el codigo necesario para que funcione.

Y sobre tu interval.... no crees que exageras, considerando que el parametro esta en milisegundos,... ten en cuenta darle un valor tan bajo es inutil, estas desperdiciando tiempo de procesamiento y ademas el interval se trunca a tu framerate (cuadros por segundo) de la pelicula.

Y agrega un updateAfterEvent(); tambien puede ser por eso sumado a interval bajo que tienes.
  #3 (permalink)  
Antiguo 05/06/2005, 11:56
 
Fecha de Ingreso: mayo-2005
Ubicación: Lima
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 0
Para hacer una prueba de la como se transmite tu swf, has un test movie Ctrl+Enter y luego en la ventana de prueba Ctrl+B para ver el grafico de bandwidth, para que veas cuanta data se carga en cada momento de la reproduccion.
  #4 (permalink)  
Antiguo 05/06/2005, 19:02
Avatar de marmol  
Fecha de Ingreso: marzo-2004
Ubicación: en argentina
Mensajes: 197
Antigüedad: 13 años, 8 meses
Puntos: 4
gracias.. si eso es lo que hago y me aparece al 70 % como dije antes... el preloader ese me lo baje de una pagina yo mucho de codigos ni dea... pero algo entiendo
tengo la pagina completa en la esena 2 en un clip de pelicula... abria algun otro codigo para que pueda funcionar mi precarga..?
__________________
Fabricante Maquina industriales
http://www.guidobatanmaquinarias.com
  #5 (permalink)  
Antiguo 07/06/2005, 02:03
 
Fecha de Ingreso: mayo-2005
Ubicación: Lima
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 0
busca aqui mismo, el tema de los loaders es un tema común, seguro vas a encontrar varios ejemplos mas sencillos que ese (de hecho).
Parece que ya se fueron aquellos tiempos de los loader que hacian un loop en los dos frames al inicio del timeline...... :P
  #6 (permalink)  
Antiguo 07/06/2005, 03:19
 
Fecha de Ingreso: mayo-2005
Ubicación: Lima
Mensajes: 160
Antigüedad: 12 años, 6 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 03:51
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:30.