Comunidad de diseño web y desarrollo en internet online

problema con precarga que no se la deja terminar

Citar            
MensajeEscrito el 17 Feb 2009 09:14 pm
Saludos! estoy por terminar mi pagina web echa integramente en flash, la cual consta de un swf principal que llama a varios swf externos, a los que les he puesto un preload a cada uno de ellos para que cargue cada sección una vez que se quiere ingresar.

Hasta aqui todo perfecto, el problema llega cuando se esta cargando un preload y hago click en otra sección (o sea que llamo a otro swf) sin que haya terminado la sección que estaba cargando antes, entonces todo se vuelve loco y empieza a verse el primer fotograma del swf y su precarga muy rápido, como si no respetara los stop, y ya no funciona ninguna precarga más.

el código es el típico de la precarga que ya habrán visto miles de veces

Código :

// Declaro la función de precarga "cargando", esta función se ejecutara
// todo el tiempo hasta que haya cargado totalmente la pelicula
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 = getBytesTotal();
   // A la variable "cargados" se le asignan el total de bytes hasta el
   // momento descargados de la web
   cargados = 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();


que puede estar fallando?
Gracias anticipadas

Por king-size

25 de clabLevel



 

Rosario, Argentina

firefox
Citar            
MensajeEscrito el 17 Feb 2009 10:07 pm
Hola, sera porque el set interval se pone loco, usa mejor onEnterFrame, o mejor aun, usa MovieClipLoader. Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 17 Feb 2009 10:13 pm
gracias longe, pero si uso MovieClipLoader me dá la impresión de que me buscaría muchos problemas mas ya que soy novato y no trabajo con clases, además habría que programar todos los swf de nuevo...

donde iria este "onEnterFrame" en el código?

Por king-size

25 de clabLevel



 

Rosario, Argentina

firefox
Citar            
MensajeEscrito el 17 Feb 2009 10:22 pm
Bueno, en realidad no es dificil, de hecho esta diseñado para facilitarte la vida, si cambias todo a onEnterFrame, tambien tienes que reprogramar todos los swf, y si no lo intentas, ¿entonces cuando dejaras de ser novato?

Antes de intentar lo de onEnterFrame, intentaremos ver si el problema esta en los intervalos, agrega esta linea:

Código ActionScript :

clearInterval(hiloPrecarga);
var hiloPrecarga = setInterval(cargando, 1);
stop();

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 17 Feb 2009 10:30 pm
Para el onEnterFrame quedaria asi:

Código ActionScript :

this.onEnterFrame = function( Void ):Void
{
   var porcentaje:Number = Math.floor((this.getBytesLoaded()*100)/this.getBytesTotal());
   porcentaje_txt.text = porcentaje +" %";
   barra_mc.gotoAndStop( porcentaje );
   if(porcentaje >= 100 )
      delete this.onEnterFrame;
      this.play();
   }
}
stop();


Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 18 Feb 2009 03:23 am
ya casi lo tengo! con eso de los intervalos seguia igual, asique usé el código de ioEntrFrame que pasaste y me funcionó de mil maravillas! (antes tuve que borrar el "}" de la línea 10 porque daba error).

Pero hay un solo swf que no me lo acepta! me tira error en el AS, cuando es exactamente igual que el que utilicé en los otros.
el error es el siguiente:

**Error** Escena=Scene 1, capa=as, fotograma=1:Línea 1: Se espera '{'
this.onEnterFrame = function( Void ):Void

ya probé de varias maneras poniendo "{" pero no funciona. repito que es igual que el que usan los otros, a que puede ser debido??

estoy muy agradecido con vos y con el foro de Clab
Muchisimas Gracias!

Por king-size

25 de clabLevel



 

Rosario, Argentina

firefox
Citar            
MensajeEscrito el 18 Feb 2009 08:54 am
el codigo correcto es:

Código ActionScript :

this.onEnterFrame = function( Void ):Void 
{ 
   var porcentaje:Number = Math.floor((this.getBytesLoaded()*100)/this.getBytesTotal()); 
   porcentaje_txt.text = porcentaje +" %"; 
   barra_mc.gotoAndStop( porcentaje ); 
   if(porcentaje >= 100 ) 
  {
      delete this.onEnterFrame; 
      this.play(); 
   } 
} 
stop(); 


Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 18 Feb 2009 04:48 pm
No hay caso...:( me sigue tirando el mismo error. Repito que solo aparece cuando se lo pongo a un swf en particular, los demas funcionan bien... que puede tener este swf de distinto a los demas? :(

Por king-size

25 de clabLevel



 

Rosario, Argentina

firefox
Citar            
MensajeEscrito el 18 Feb 2009 04:54 pm
Ya lo encontré... el problema estaba en que estaba exportado para actionscript 1.0 y no tengo idea de cuando elegí yo eso, pero en fin, problema solucionado...

Muchisimas gracias! estoy realmente sorprendido de la predisposicion de ayudar que tienen en el foro.
Un saludo enorme.

Por king-size

25 de clabLevel



 

Rosario, Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.