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

Solo se ve el final PRECARGA

Estas en el tema de Solo se ve el final PRECARGA en el foro de Flash y Actionscript en Foros del Web. Hola, que hay; tengo precarga, la tipica...pero solo se ven los 2 segundos del final de la animacion, mientras carga. Lo podeis comprabar en : ...
  #1 (permalink)  
Antiguo 06/04/2008, 07:47
Avatar de alexander_sp  
Fecha de Ingreso: febrero-2004
Ubicación: Barcelona
Mensajes: 694
Antigüedad: 13 años, 9 meses
Puntos: 4
Solo se ve el final PRECARGA

Hola, que hay;
tengo precarga, la tipica...pero solo se ven los 2 segundos del final de la animacion, mientras carga.
Lo podeis comprabar en :
http://www.tallerdisseny.com/

el codigo es:
function cargando() {
// Declaración de variables
var total, cargados, porcentaje;
// A la variable "total" se le asigna el tamaño de la pelicula en bytes
total = _root.getBytesTotal();
// A la variable "cargados" se le asignan el total de bytes hasta el
//momento descargados de la web
cargados = _root.getBytesLoaded();
//Por medio de una regla de tres obtiene el porcentaje cargado y redondea el valor con la función
//"Math.floor"
porcentaje = Math.floor((cargados*100)/total);
//Asigna al campo de texto porcentaje_txt el porcentaje cargado
porcentaje_txt.text = porcentaje+" %";
//Mueve la barra de carga al frame correspondiente al porcentaje
barra_mc.gotoAndStop(porcentaje);
//Si la cantidad de bytes cargados es igual a la cantidad total de bytes
if (cargados == total) {
//Hacer que se deje de ejeuctar esta función
clearInterval(hiloPrecarga);
//Iniciar la pelicula
play();
}
}
// setInterval nos servira para que la función "cargando" se ejecute cada 1 milisegundo
// Asi, nuestra función revisara constantemente la cantidad de bytes descargados
// y solo iniciara la pelicula hasta que la descarga termine
// la variable "hiloPrecarga" nos servira para saber que esta corriendo nuestra función
// y frenar su ejecución cada milisegundo por medio de "clearInterval"
var hiloPrecarga = setInterval(cargando, 1);
//Evita que inicie la pelicula
stop();



DECIDME ALGO::::GRACIAS
  #2 (permalink)  
Antiguo 06/04/2008, 08:48
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
Re: Solo se ve el final PRECARGA

Esto es porque cuando la película se queda en la cache del navegador tarda menos tiempo en cargar que lo que dura tu animación.

Si quieres solucionarlo tienes que usar una variable intermedia que se incremente cuando transcurran X pasadas de la función del intervalo, pero que se incremente si el porcentage de carga es menor que el fotograma actual del intervalo.

Supongo que tu clip de barra_mc tiene 100 fotogramas.

Código PHP:
function cargando() {
    
    if(
entrada==undefined)
    {
        
fotograma_preloader=1;
        
tiempo_fotograma=10;
        
cuenta_tiempo=0;
        
entrada=true;
    }
    var 
totalcargadosporcentaje;
    
total _root.getBytesTotal();
    
cargados _root.getBytesLoaded();
    
porcentaje Math.ceil((cargados*100)/total);
    
porcentaje_txt.text fotograma_preloader+" %";
    if(
fotograma_preloader<porcentaje)
    {
        
trace(fotograma_preloader);
        
cuenta_tiempo++;
    }
    if(
cuenta_tiempo==tiempo_fotograma)
    {
        
fotograma_preloader++;
        
barra_mc.gotoAndStop(fotograma_preloader);
        
cuenta_tiempo=0;         
    }    
    if ((
cargados == total) && fotograma_preloader==100
    { 
        
clearInterval(hiloPrecarga);    
        
play();
    }
}

var 
hiloPrecarga setInterval(cargando1);
stop(); 
Lo que hace es:

a la entrada la funcion definimos:

//actual fotograma de la barra
fotograma_preloader=1;

//tiempo que ha de transcurrir para mostrar otro fotograma
// cuanto menor sea más rápido va (mínimo 2 para que esto tenga sentido)
tiempo_fotograma=10;

//contador de tiempo, vuelve a 0 al llegar a tiempo_fotograma
cuenta_tiempo=0;

//el txt muestra el fotograma de la barra
porcentaje_txt.text = fotograma_preloader+" %";


if(fotograma_preloader<porcentaje)
{
// si el porcentage de carga es mayor que el fotograma actual incrementamos
cuenta_tiempo++;
}


if(cuenta_tiempo==tiempo_fotograma)
{
// si el tiempo para incrementar un fotograma ha transcurrido lo incrementamos
fotograma_preloader++;
//vamos al fotograma que corresponda
barra_mc.gotoAndStop(fotograma_preloader);
//reiniciamos contador
cuenta_tiempo=0;
}

Lo mismo te parece un poco complicado :S



Un saludo.
__________________
[+]
[+]

Última edición por yoseman; 06/04/2008 a las 08:56
  #3 (permalink)  
Antiguo 06/04/2008, 11:15
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 14 años, 5 meses
Puntos: 406
Re: Solo se ve el final PRECARGA

Hola alexander_sp:
Lo que debe de estar pasando es que tienes alguna imagen en el primer frame o algún archivo vinculado, por eso primero carga lla imagen o el archivo vinculado y después ya se ve el preloader.

Revisa eso.

Espero haberte sido de ayuda
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #4 (permalink)  
Antiguo 06/04/2008, 11:26
Avatar de alexander_sp  
Fecha de Ingreso: febrero-2004
Ubicación: Barcelona
Mensajes: 694
Antigüedad: 13 años, 9 meses
Puntos: 4
Re: Solo se ve el final PRECARGA

Hola, Yoseman me ha ido de perlas...gracias
No tengo nada vinculado Bandit, la solucion es la de Yoseman.
Gracias a los dos.
un saludo
  #5 (permalink)  
Antiguo 08/04/2008, 13:06
 
Fecha de Ingreso: noviembre-2005
Mensajes: 21
Antigüedad: 12 años
Puntos: 0
Re: Solo se ve el final PRECARGA

Cita:
Iniciado por yoseman Ver Mensaje
Esto es porque cuando la película se queda en la cache del navegador tarda menos tiempo en cargar que lo que dura tu animación.

Si quieres solucionarlo tienes que usar una variable intermedia que se incremente cuando transcurran X pasadas de la función del intervalo, pero que se incremente si el porcentage de carga es menor que el fotograma actual del intervalo.

Supongo que tu clip de barra_mc tiene 100 fotogramas.

Código PHP:
function cargando() {
    
    if(
entrada==undefined)
    {
        
fotograma_preloader=1;
        
tiempo_fotograma=10;
        
cuenta_tiempo=0;
        
entrada=true;
    }
    var 
totalcargadosporcentaje;
    
total _root.getBytesTotal();
    
cargados _root.getBytesLoaded();
    
porcentaje Math.ceil((cargados*100)/total);
    
porcentaje_txt.text fotograma_preloader+" %";
    if(
fotograma_preloader<porcentaje)
    {
        
trace(fotograma_preloader);
        
cuenta_tiempo++;
    }
    if(
cuenta_tiempo==tiempo_fotograma)
    {
        
fotograma_preloader++;
        
barra_mc.gotoAndStop(fotograma_preloader);
        
cuenta_tiempo=0;         
    }    
    if ((
cargados == total) && fotograma_preloader==100
    { 
        
clearInterval(hiloPrecarga);    
        
play();
    }
}

var 
hiloPrecarga setInterval(cargando1);
stop(); 
Lo que hace es:

a la entrada la funcion definimos:

//actual fotograma de la barra
fotograma_preloader=1;

//tiempo que ha de transcurrir para mostrar otro fotograma
// cuanto menor sea más rápido va (mínimo 2 para que esto tenga sentido)
tiempo_fotograma=10;

//contador de tiempo, vuelve a 0 al llegar a tiempo_fotograma
cuenta_tiempo=0;

//el txt muestra el fotograma de la barra
porcentaje_txt.text = fotograma_preloader+" %";


if(fotograma_preloader<porcentaje)
{
// si el porcentage de carga es mayor que el fotograma actual incrementamos
cuenta_tiempo++;
}


if(cuenta_tiempo==tiempo_fotograma)
{
// si el tiempo para incrementar un fotograma ha transcurrido lo incrementamos
fotograma_preloader++;
//vamos al fotograma que corresponda
barra_mc.gotoAndStop(fotograma_preloader);
//reiniciamos contador
cuenta_tiempo=0;
}

Lo mismo te parece un poco complicado :S



Un saludo.
Hola yoseman, tengo el mismo problema que este muchacho, mi preloader no aparece hasta que está al 80% aprximadamente, y después de laaaargos segundos, y quería probar tu código php, pero no sé dónde aplicar el código (si al MC o al frame) y dónde vá el código de la función. Si pudieras aclarame estos puntos te agradeceré muchísimo! Saludos
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 20:28.