Comunidad de diseño web y desarrollo en internet online

Precarga AS3 (da vueltas y vueltas, no finaliza)

Citar            
MensajeEscrito el 09 Nov 2009 03:20 pm
Hola, he visto los tutoriales de precarga en AS3 y me han ayudado mucho.
Yo logré hacer una precarga del tipo que tiene un mc animado, y cuando termina de realizar la animación (100 frames), pasa al website, pero tengo un problema con eso, es que cuando ya has visto la animación completa, tratas de ver nuevamente el website, la primera animación de precarga da vueltas y vueltas y nunca logra pasar al website en sí.
Este es el sitio: www.visualmentevinilos.com/vv/, intenten ver el website y luego f5, verán que la animación de precarga se repite y repite y nunca pasa.
Este es el código de la precarga.

Código ActionScript :

var Nframes:Number=100;
var porcentaje:Number;
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onPRO);
function onPRO(e:ProgressEvent){
porcentaje=Math.round((e.bytesLoaded/e.bytesTotal)*Nframes)
pre_mc.gotoAndStop(porcentaje);
if(e.bytesLoaded==e.bytesTotal){
gotoAndPlay(2);
}
}
stop();

Dentro de la animación intenté poner un stop(), pero aún así nada.
Podrían ayudarme y decirme que hice mal?

Gracias!

Por BlackMage

37 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Nov 2009 03:45 pm
Porqué no pruebas de añadirle el evento ProgressEvent.COMPLETE, que se llama cuando se ha acabado de cargar todo?

Saludos!!

Por ur!

256 de clabLevel



 

Barcelona

chrome
Citar            
MensajeEscrito el 09 Nov 2009 03:45 pm
Trata de cambiar la forma de detectar cuando se completo la carga:

Código ActionScript :

//"Complete" se despacha al completarse la carga
this.loaderInfo.addEventListener(Event.COMPLETE, onCOM);

function onCOM(e:Event){
gotoAndPlay(2);
} 


A ver si con eso ya funciona :) Saludos.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Nov 2009 03:46 pm
Ups perdon Ur!....no refresque la pagina :P

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Nov 2009 03:50 pm
Se lo has dado demasiado fácil tu!! jejeje

Si no te funcionara el código de Roberto, cambia el Event.COMPLETE por ProgressEvent.COMPLETE!

Suerte

Por ur!

256 de clabLevel



 

Barcelona

chrome
Citar            
MensajeEscrito el 10 Nov 2009 04:16 pm
Añadí las lineas que dijo Roberto:

Código ActionScript :

var Nframes:Number=100; 
var porcentaje:Number; 
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onPRO); 
function onPRO(e:ProgressEvent){ 
porcentaje=Math.round((e.bytesLoaded/e.bytesTotal)*Nframes) 
pre_mc.gotoAndStop(porcentaje); 

this.loaderInfo.addEventListener(Event.COMPLETE, onCOM); 
function onCOM(e:Event){ 
gotoAndPlay(2); 
} 

} 
stop();


Sigo con el mismo problema, intenté cambiar Event.COMPLETE por ProgressEvent.COMPLETE, pero aún así no consigo hacer que funcione bien.

Debo confesar algo, estoy usando el SWFAddress para este website, el HTML llama a un SWF que se llama "c", "c" tiene en su primer frame que por cierto está vacio:

Código ActionScript :

var loader:Loader = new Loader();
loader.load(new URLRequest(Stage.path ? Stage.path : 'website.swf'));
addChild(loader);
stop();


Esto influirá en mi problema?, la precarga que estamos viendo en este tema lo pongo en website.swf.

Gracias Roberto y UR por tomarse su tiempo, estoy muy agradecido

Por BlackMage

37 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Nov 2009 10:19 pm
Segun entendi "c" carga un swf externo lo llamare "externo" XD jajaja.

Prueba hacer la precarga en "c" y no en "externo", de modo que en tu codigo de "c" tendrias:

Código ActionScript :

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onPRO);  
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCOM);    
loader.load(new URLRequest(Stage.path ? Stage.path : 'website.swf')); 
addChild(loader); 
stop();

//En tu funcion onPro checas el porcentaje :P
//En la de onCom reproduces tu swf cargado 
function onCOM(e:Event){  
e.target.content.gotoAndPlay(2);  
}  


Ojo que ahora onCom y OnPro son funciones de "c" y no de externo, a ver si asi funciona :P

Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Nov 2009 04:36 pm
Gracias Roberto, intenté lo que me decías, pero no logré hacer que funcione.
Hice lo siguiente:
Esto en "website", que es el que carga "c"

Código ActionScript :

function enterFrame(e:Event){
   var bl:int = loaderInfo.bytesLoaded;
   var bt:int = loaderInfo.bytesTotal;
   if (bl && bt && bl == bt) {
      removeEventListener(Event.ENTER_FRAME, enterFrame);
      nextFrame();
   } else if (loading_mc.bar_mc) {
      loading_mc.bar_mc.scaleY = bl/bt;
   }
}
addEventListener(Event.ENTER_FRAME, enterFrame);
stop();


Y en "c", lo dejé como estaba, o sea:

Código ActionScript :

var loader:Loader = new Loader();
loader.load(new URLRequest(Stage.path ? Stage.path : 'website.swf'));
addChild(loader);
stop();


La precarga ahora sale sólo una vez, pero es una precarga lineal, y no radial como yo queria :( , en base a esto crees que se pueda modificar a una forma radial?

Ahora tengo otro problemita... una vez ya dentro del website, he puesto un preloader externo, para cada botón, eso si funciona, pero no a la perfección, cuando va mas o menos en 70% la animación carga y en modo streaming aparece el contenido, no sé si me dejo entender :cry:

Con esto llamo al preloader externo:

Código ActionScript :

var contenedor = new Loader();
contenedor.load(new URLRequest("preloader.swf"));
addChild(contenedor);
contenedor.x = 0
contenedor.y= 0


Y en el preloader:

Código ActionScript :

var request:URLRequest = new URLRequest("contenido.swf"); 
var loader:Loader = new Loader();

loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);

function loadProgress(event:ProgressEvent):void 
{
    var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;//percentLoaded es el nombre de instancia de un Dynamic Text
    percentLoaded = Math.round(percentLoaded * 100);
   
   this.percentLoaded.text = String(uint(percentLoaded)) + "%";
}

// Load complete, hide the animating graphic and text
function loadComplete(event:Event):void 
{
    trace("Load Complete");
   this.rotatingOrb.visible = false;//rotatingOrb es el nombre de instancia de una animación cualquiera (=
   this.percentLoaded.visible = false;
}

loader.load(request);
this.addChild(loader);


Crees que me puedas otra manito con esto?, muchas gracias! con tu ayuda estoy entendiendo algo más de AS3.

Por BlackMage

37 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Nov 2009 05:54 pm
:S no entendi bien eso de una carga radial.

Lo de tu segundo preloader no esoty familiarizado con eso del modo streaming pero ps por ejemplo mostrar un video por streaming es no esperar a que se cargue por completo si no ir mostrando lo cargado,si no esta en modo streaming funciona bien??.
Todo lo que digo es asi a palos de ciego pero en un reproductor de video con streaming que hice recuerdo que le podia modificar el tiempo cargado en el buffer no se si tengas algo como esto.

Si tienes mas info sobre eso te la agradeceria ;)

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Nov 2009 03:11 pm
En realidad digo "modo streaming" por hacer una referencia a que la precarga no termina, cuando va como en 60% o 70% sale la animación y empieza con su reproducción de forma lenta, pues esto porque no termina de cargar bien.

Cuando digo radial, es que esta es una web de un tipo que colecciona discos de vinilos, e hice su precarga como si se dibujara en forma horaria un mini disco de vinilo, pues era una animación de 100 frames y bla bla... cosa de la primera precarga.

Espero que haya sido más claro ahora :)

Por cierto, por si quieres ver el website la colgé en el directorio raíz ya: www.visualmentevinilos.com

Gracias Roberto!

Por BlackMage

37 de clabLevel



 

chrome

 

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