Comunidad de diseño web y desarrollo en internet online

Preloader, load movie, cuelga pelicula si no descarga todo

Citar            
MensajeEscrito el 07 May 2009 09:56 pm
Hola, ante todo presentarme, soy velok, soy nuevo en este foro, aunque llevo visitando la web de cristalab y sus secciones de recursos y tuturiales, desde hace años, enorabuena y muchas gracias por todos los aportes.

Hoy me trae a escribir aqui, un problema que supongo sera muy tonto pero con el que no doy con la solucion.
Planteo el tema a ver si alguien puede hecharme una mano.
Tengo un pagina, montada toda con swf, en distintos niveles, y que se llaman de uno a otro con loadmovie, cada pelicula tiene su preloader, vamos ninguna complicacion, llevo años trabajando asi, el problema me viene, cuando llamo a una pelicula y no permito que descarge del todo, o sea antes de que llege al 100%, por ejemplo al 80 o asi llamo a otra peli, que carga en el mismo nivel para sustituir la otra, y se me queda enganchada, nada de esto sucede si dejo que las peliculas terminen de cargar.

Este es el codigo del preloader

Código :

stop();
loadbar._xscale = 1;
var loadingCall:Number = setInterval(preloadSite, 50);
function preloadSite():Void {
   var siteLoaded:Number = _root.getBytesLoaded();
   var siteTotal:Number = _root.getBytesTotal();
   var percentage:Number = Math.round(siteLoaded/siteTotal*100);
   loadbar._xscale = percentage;
   percentclip.percentdisplay.text = percentage+"%";
   percentclip._x = loadbar._x+loadbar._width;
   bytesdisplay.text = "loaded "+siteLoaded+" of "+siteTotal+" bytes";
   if (siteLoaded>=siteTotal) {
      clearInterval(loadingCall);
      gotoAndPlay(5);
   }
}



Se me keda realizando un bucle con la accion de la ultima linea, da igual queponga goto o play, la nueva pelicula que carga, no respeta ningunas de sus acciones. y incluso , se me ponen a parpadear peliculas ya cargadas previamente, en otro nivel como el menu.

Siento el tocho, pero no sabia como explicarme, si necesitais que os aclare cualquier cosa comentarmelo.

Alguien tiene idea de que error puede suceder? O que solucion le podria dar?, he probado otros preloaders mas sencillos pero me ocurre el mismo problema.

Muchas gracias tod@s por esta comunidad.

Un saludo

Por velok

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 May 2009 10:46 am
Usas un preloader basado en setInterval, si usas idéntico code para varias precargas, se mezclan y no se borran. Pásalo a un preloader basado en onEnterFrame.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 May 2009 11:15 am
Muchas gracias por responder jorge, aunque llevo tiempo en esto del flash, la verdad es que soy mucho mas de linea de tiempo que de programacion, se puede modificar el preloader que uso cambiando, set interval por On enter frame?, probare a ver, si no mirare a ver si encuentro algun preloader basado, on enter frame, muchas gracias, ahora por lo menos ya estoy en el camino de la busqueda de algo correcto, no sabia por donde tirar.

Gracias de nuevo.

Un saludo a tod@s

Por velok

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 May 2009 11:59 am
Encontre la solucion, la posteo aqui por si alguien, le sucede lo mismo, que lo pueda resolver.
Gracias Jorge por indicarme por donde tirar.

Salu2

Código :

_root.createEmptyMovieClip("preloader",1); // Create preloader MC

// EnterFrame Loop
preloader.onEnterFrame = function () {
// Position Preloader
this._x = 225;
this._y = 200;

// Create "percentField"
this.createTextField("percentField", 1, 0, 0, 100, 16);
this.percentField.autoSize = "left";
this.percentField.selectable = false;

// Create Bar
this.createEmptyMovieClip("load_bar", 2);
this.load_bar.lineStyle(5, 0x000000, 100);
this.load_bar.lineTo((int((this.bytes_loaded/this.total_bytes)*100)),0);

// State Variables
this.total_bytes = _root.getBytesTotal();
this.bytes_loaded = _root.getBytesLoaded();

// Return Load Percent to "percentField"
this.percentField.text = int((this.bytes_loaded/this.total_bytes)*100) + "%";

if (this.total_bytes == this.bytes_loaded) {
delete preloader.onEnterFrame; // Stops Loop by killing it
preloader.removeMovieClip(); // Destroy preloader MC
_root.gotoAndPlay(2); // We're done, time to move along
}
}
stop();

Por velok

1 de clabLevel



 

firefox

 

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