Comunidad de diseño web y desarrollo en internet online

Ayuda con duplicacion de precarga multiple

Citar            
MensajeEscrito el 01 Sep 2007 05:27 pm
Hola, necesito de su ayuda para solucionar un problema que tengo.
Estoy aplicando el tutorial de precargas multiples: http://www.cristalab.com/tutoriales/211/precargas-multiples-de-swf-y-jpg--simultanea-en-un-solo-preload
pero con una variacion expuesta por el mismo Sir Zeta Von Guillez en este post: http://www.cristalab.com/foros/t19584.html
El objetivo es cargar la primera pelicula y que aparezca, pero seguir cargando las siguientes para cuando sean necesarias. (a diferencia del tutorial original que muestra todo una vez cargado).

Mi problema es que apliqué el código pero la barra de precarga aparece dos veces, una en el lugar correcto (y desaparece cuando tiene que desaparecer) pero queda una colgada arriba (cerca del 0,0) y no puedo descrubrir mi error.

Acá dejo mi codigo, que lo arme desde el tutorial y el post que puse antes:

Código :

var precarga:MovieClipLoader = new MovieClipLoader();
precarga.addListener(this);
function onLoadInit(clip:MovieClip) {
   clip._visible = false;
}
function onLoadProgress(clip:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
   porcentaje = Math.round(bytesLoaded/bytesTotal*100);
   barra.gotoAndStop((cargado*100)+porcentaje);
}
function onLoadComplete(clip:MovieClip) {
   cargado++;
   cargaMultiple();
}
//
function cargaMultiple(queX:Number, queY:Number) {
//añade el MovieClip con la animación al escenario
this.attachMovie("barra", "barra", this.getNextHighestDepth());
//sitúa el MovieCLip en posición
barrita._x = queX;
barrita._y = queY;

if (cargado == 0) {
   precarga.loadClip("00.swf", contenedor0);
   //ha acabado de cargar la pelicula

} else if (cargado == 1) {//continua cargando....
   precarga.loadClip("01.swf", contenedor1);
} else if (cargado == 2) {
   precarga.loadClip("02.swf", contenedor2);
} else if (cargado==3) {
   precarga.loadClip("03.swf", contenedor3);
} else if (cargado==4) {
     contenedor0._visible = true;
     contenedor1._visible = false;
      contenedor2._visible = false;
      contenedor3._visible = false;
      gotoAndPlay(2);
          removeMovieClip(barra);
   }
}
var cargado = 0;
cargaMultiple(150,350);
stop();


Y los botones tienen la funcion de visible:

Código :

contenedor2._visible = true;


Los botones funcionan bien, todo funciona, la carga se realiza como quiero, es solo el tema de que la precarga aparece duplicada y solo una desaparece.

Gracias, espero me puedan ayudar.

Por Andie

7 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 01 Sep 2007 10:04 pm
Por favor alguien que me ayude.

Lo unico que logre es que al repetir "removeMovieClip(barra);" desaparezcan ambos, pero solo si pongo esto en onLoadComplete.

Ademas las coordenadas que le doy a la precarga solo las toma uno de los dos que me aparecen.

Ayuda porfa :(

Por Andie

7 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 01 Sep 2007 11:48 pm
Hola Andie. En principio estoy viendo que tienes dentro de la función "cargaMultiple()" este código:

Código :

function cargaMultiple(queX:Number, queY:Number) {
//añade el MovieClip con la animación al escenario
this.attachMovie("barra", "barra", this.getNextHighestDepth());
//sitúa el MovieCLip en posición
barrita._x = queX;
barrita._y = queY;
[...]


Si llamas varias veces a la función "cargaMultiple" (de hecho, en tu caso la estás llamando 4 veces, una cuando comienzas el código y las demás cada vez que se ejecuta "onLoadComplete") esa función va a traer de la biblioteca, no una, ni dos, sino 4 barras de precarga!!! :shock:
O sea que tu problema no es con una barra de más sino con tres :ownz:
La razón por la que no se colocan en la posición que pides es porque las demás veces (en el "onLoadComplete()") no le das los parámetros a la función, pero ese no es el problema.
Para resolverlo, simplemente saca el código que te pongo arriba de la función y ponlo aparte, puedes colocarlo si quieres antes de llamar a la función cargaMultiple(), así:

Código :

var cargado = 0;

//añade el MovieClip con la animación al escenario
this.attachMovie("barra", "barra", this.getNextHighestDepth());
//sitúa el MovieCLip en posición
barrita._x = queX;
barrita._y = queY;

cargaMultiple(150,350);

stop();

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 02 Sep 2007 12:47 am
Gracias Herr C. Von Frick, pero creo que estoy haciendo algo mal, porque no funciona.
Me puedes poner el codigo completo como quedaria porfa?

Borro el codigo que pusiste y pongo el otro, pero me imagino que lo estoy mal ubicando, porque desaparecio mi barra en las coordenadas correctas y sigue la otra en 0,0

Gracias y disculpa por pedirte todo el codigo.

Por Andie

7 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 02 Sep 2007 12:54 am
Ok perdón, creo que ahora lo puse bien, ya que aparece y desaparece solo una barra.
PERO esta barra aparece en la posicion (0,0), y no en la (150,350), por que? sigo llamando a otra?

Y además, la idea es que cuando cargue la primera pelicula (00.swf) la muestre, y siga descargando las otras, pero no aparece hasta que carga las 4 pelis. Alguna solucion?

Muchas gracias... pego el codigo como lo tengo ahora:

Código :

var precarga:MovieClipLoader = new MovieClipLoader();
precarga.addListener(this);
function onLoadInit(clip:MovieClip) {
   clip._visible = false;
}
function onLoadProgress(clip:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
   porcentaje = Math.round(bytesLoaded/bytesTotal*100);
   barra.gotoAndStop((cargado*100)+porcentaje);
}
function onLoadComplete(clip:MovieClip) {
   cargado++;
   cargaMultiple();
}
//
function cargaMultiple(queX:Number, queY:Number) {


if (cargado == 0) {
   precarga.loadClip("00.swf", contenedor0);
   //ha acabado de cargar la pelicula

} else if (cargado == 1) {//continua cargando....
   precarga.loadClip("01.swf", contenedor1);
} else if (cargado == 2) {
   precarga.loadClip("02.swf", contenedor2);
} else if (cargado==3) {
   precarga.loadClip("03.swf", contenedor3);
} else if (cargado==4) {
     contenedor0._visible = true;
     contenedor1._visible = false;
      contenedor2._visible = false;
      contenedor3._visible = false;
      gotoAndPlay(2);
     removeMovieClip(barra);
   }
}
var cargado = 0;
//añade el MovieClip con la animación al escenario
this.attachMovie("barra", "barra", this.getNextHighestDepth());
//sitúa el MovieCLip en posición
barrita._x = queX;
barrita._y = queY;
cargaMultiple(150,350);
stop();

Por Andie

7 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:00 am

Código :

var cargado:Number = 0;
var precarga:MovieClipLoader = new MovieClipLoader();

//añade el MovieClip con la animación al escenario
this.attachMovie("barra", "barra", this.getNextHighestDepth(), {_x:150, _y:350});
cargaMultiple();
stop();

precarga.addListener(this);
function onLoadInit(clip:MovieClip) {
   clip._visible = false;
}

function onLoadProgress(clip:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
   porcentaje = Math.round(bytesLoaded/bytesTotal*100);
   barra.gotoAndStop((cargado*100)+porcentaje);
}

function onLoadComplete(clip:MovieClip) {
   cargado++;
   cargaMultiple();
}

function cargaMultiple() {
if (cargado == 0) {
   precarga.loadClip("00.swf", contenedor0);
   //ha acabado de cargar la pelicula

} else if (cargado == 1) {//continua cargando....
   precarga.loadClip("01.swf", contenedor1);
} else if (cargado == 2) {
   precarga.loadClip("02.swf", contenedor2);
} else if (cargado==3) {
   precarga.loadClip("03.swf", contenedor3);
} else if (cargado==4) {
     contenedor0._visible = true;
     contenedor1._visible = false;
      contenedor2._visible = false;
      contenedor3._visible = false;
      gotoAndPlay(2);
      removeMovieClip(barra);
   }
}

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:00 am
Ok, estupido error mio el tema de la posicion... nombre erróneo (barra... barrita...)
Sin embargo, sigue mal, pense que con eso se arreglaria :P

Por Andie

7 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:03 am

Herr C. Von Frick escribió:

Código :

var cargado:Number = 0;
var precarga:MovieClipLoader = new MovieClipLoader();

//añade el MovieClip con la animación al escenario
this.attachMovie("barra", "barra", this.getNextHighestDepth(), {_x:150, _y:350});
cargaMultiple();
stop();

precarga.addListener(this);
function onLoadInit(clip:MovieClip) {
   clip._visible = false;
}

function onLoadProgress(clip:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
   porcentaje = Math.round(bytesLoaded/bytesTotal*100);
   barra.gotoAndStop((cargado*100)+porcentaje);
}

function onLoadComplete(clip:MovieClip) {
   cargado++;
   cargaMultiple();
}

function cargaMultiple() {
if (cargado == 0) {
   precarga.loadClip("00.swf", contenedor0);
   //ha acabado de cargar la pelicula

} else if (cargado == 1) {//continua cargando....
   precarga.loadClip("01.swf", contenedor1);
} else if (cargado == 2) {
   precarga.loadClip("02.swf", contenedor2);
} else if (cargado==3) {
   precarga.loadClip("03.swf", contenedor3);
} else if (cargado==4) {
     contenedor0._visible = true;
     contenedor1._visible = false;
      contenedor2._visible = false;
      contenedor3._visible = false;
      gotoAndPlay(2);
      removeMovieClip(barra);
   }
}

GRACIAS!
Ahi si esta el codigo mucho mejor y mas ordenado, muchas gracias por tu ayuda.
Ahora vuelvo a lo que dije antes... el tema de que quiero que aparezca la primer pelicula apenas este cargada, y siga cargando las otras 3 sin mostrarlas hasta que las llame... por que no me anda? o no se puede?

Gracias de nuevo :D

Por Andie

7 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:15 am
Mmmmm... sí se puede, y según el código es lo que ocurre ¿las pruebas las estás haciendo en la web o desde tu máquina? De todas maneras, prueba cambiando el "_visible = false" por "_alpha = 0". Si estás haciendo las pruebas desde tu máquina trata de hacerlas desde la web.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:20 am
Lo pruebo desde la web. Y no me funcionó usando alpha tampoco. No entiendo que pasa =/

Por Andie

7 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:44 am
Bueno, lo que se me ocurre es que revises que los nombres de instancia de cada "cargador" sean exactos a como los tienes en el código. Sé que pensarás que es algo obvio, pero muchas veces los problemas están el lugares evidentes. Nos cuentas.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:51 am
Revisé los clips y en teoría está todo bien.
La precarga termina cuando carga todas las pelis. Ahi despues ya anda todo bien, o sea no tengo problemas y los botones funcionan bien y todo eso.
Lo único es que la peli "00.swf" no aparece sino hasta que se terminan de cargar todas las peliculas.
(incluso probé poniendo un botón que llama a 00.swf, y funciona, presionándolo puedo ver la pelicula antes que termine la carga del resto, o sea que el tema está en que no lo muestra automático apenas la carga)

Gracias de nuevo... sigo probando cosas

Por Andie

7 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:58 am
ahhhh, creo que entonces no te había entendido bien.
La razón por la que la primera película no se ve es porque la haces invisible desde un primer momento y sólo la haces visible cuando terminan de cargarse todas (en el onLoadInit haces todas las películas invisibles y en cargaMultiple sólo la haces visible cuando cargado == 4.

Modifica el onLoadInit con un if:

Código :

function onLoadInit(clip:MovieClip) {
   if(clip._name != "contenedor0"){  //Si el nombre del contenedor no es "contenedor0"
       clip._visible = false;
   }
//Eso hará que contenedor0 sea visible (que es el valor por defecto)
}

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 02 Sep 2007 02:03 am
Gracias! ^^
Ahora si anda perfecto!

Por Andie

7 de clabLevel



Genero:Femenino  

firefox

 

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