Comunidad de diseño web y desarrollo en internet online

Error en barra de precarga

Citar            
MensajeEscrito el 04 Sep 2011 06:09 pm
Buenas.

Tengo un pequeño problema. He seguido los pasos de Ejemplo de precarga simple en Actionscript 3, previamente había estado mirando otros tutoriales más complejos para mí, así me decidí a ponerlo en un SWF.

Ahora el problema, si lo pruebo, funciona perfecto; la complicación viene que este SWF es llamado por otro, con lo cual, la parte del final del código:

Código ActionScript :

this.loaderInfo.addEventListener(ProgressEvent.PROGRESS,progreso);
supongo que es la que me genera el error ¿estoy en lo cierto?

Un saludo.

PD: No he puesto más código aquí porque es el mismo prácticamente.

Por evilactiviti

27 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 05 Sep 2011 01:56 am
Hola :)

Código ActionScript :

// swfLoader >> instancia del Loader [en caso sea un swf el que intentas cargar].

swfLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler)
function progressHandler(e:ProgressEvent):void
{
   textPercent_txt.text  = Math.round((e.bytesLoaded * 100) / e.bytesTotal) + " % "
}

Por developedAS3

Claber

416 de clabLevel

5 tutoriales

Genero:Masculino  

developer

chrome
Citar            
MensajeEscrito el 05 Sep 2011 08:16 am
Hola :D

Sí, así es cómo lo he arreglado, pero cambiando ese código de película. Imaginate, la película padre que llama a la película hijo, el código en principio lo había puesto en la película hijo, ¿cómo sería en ese caso? Aunque ya lo cambié.

Otra pequeña cosa. Cabe la posibilidad de que salga del SWF hijo antes de que acabe la carga, es entonces cuando sale un pequeño error y es que el siguiente SWF que cargo el porcentaje de la precarga se sale de 100%, es como si al salir la primera vez, dejase algo por leer. Cuando le doy al botón para salir he intentado usar unload(), close(). ¿Que podría hacer aquí? He hecho un trace para ver las variables y los bytes cargados superan al peso del SWF en esos casos, estoy confundido. Los listeners los quito cada vez que salgo de la carga, la reproducción o el final, se vuelven a colocar con cada película nueva que carga, así que estoy bastante despistado.

Espero no aburrir. JEJE

Por evilactiviti

27 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 05 Sep 2011 10:07 am
He probado a usar:

Código ActionScript :

trace(swf_Loader.contentLoaderInfo.url);
peso=event.bytesTotal;trace(peso);
cargados=event.bytesLoaded;trace(cargados);

El primer trace me marca la dirección correcta, he puesto peso y cargados a 0 cuando se sale de la carga, y, aún así, cargados me marca casi el doble que la variable peso. :cry:

Por evilactiviti

27 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 05 Sep 2011 05:27 pm
Bueno, lo he medio arreglado. Las variables siguen haciendo lo que quieren, no sé qué puede fallar. En teoría cuando se carga algo nuevo en el Loader, reemplaza lo anterior ¿no? En vez de hacer la comprobación:

Código ActionScript :

if(carga==peso) {
   cargador.gotoAndStop(0);
}

Hago la comprobación >=, con esto se ejecuta el SWF, aunque hay un lapso de tiempo que aparece la pantalla en blanco, ya que, carga sigue en aumento. Se que es una chapuza, pero no veo solución.
Todo esto pasa después de cargar un SWF que pesa 24 MB y darle al botón de salir al menu, no sé si esto es relevante, pero es así.

Aún con todo esto, la prueba en local funciona perfectamente...en web no. Por la pantalla que aparece cuando doy alguna opción del menú, que es la barra de carga (MovieClip), no detecta esto:

Código ActionScript :

swf_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, carg);
swf_Loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, pro);
               

No pasa por aquí:

Código ActionScript :

function pro(event:ProgressEvent):void  {
         peso=event.bytesTotal;
         carga=event.bytesLoaded;
         percent=Math.floor((carga*100)/peso);
         cargador.gotoAndStop(percent);
         cargador.proText.text=percent.toString()+" %";
         if(carga>=peso)    {
            cargador.gotoAndStop(0);
         }
         if (peliCargada!=null) {
            peliCargada.stop();
         }
      }

Y por aquí tampoco:

Código ActionScript :

function carg(event:Event):void {
         if (cargador.currentFrame!=0) {
            cargador.gotoAndStop(0);
         }
         peliCargada=MovieClip(swf_Loader.content);
         peliCargada.gotoAndPlay(2)
         main_mc.addChild(swf_Loader);
         swf_Loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, carg);
         swf_Loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,pro);
      }

Quizás está el código un poco aturullado, pero es que tengo la cabeza como un bombo. Comentar algo...lo que sea...que me vaya a dormir...lo que queráis :)

Por evilactiviti

27 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 06 Sep 2011 06:01 pm
Buenas, ya sé de donde viene el fallo:

Código ActionScript :

peso=event.bytesTotal;

Peso siempre es 0. He colocado una caja de texto dinámico en pantalla para que me muestre event, y bytesLoaded funciona correctamente, falla bytesTotal. Los SWF's que voy cargando los coge de un XML, asi que, podría meterle el valor a la variable desde ahí. Aunque si alguien tiene idea de por qué pasa esto, le agradezco de antemano.

Un saludo.

Por evilactiviti

27 de clabLevel



Genero:Masculino  

msie

 

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