Comunidad de diseño web y desarrollo en internet online

Mostrar pelicula mientras se carga otra

Citar            
MensajeEscrito el 11 Jun 2007 06:48 pm
Hola,

Estoy haciendo una pelicula flash en la que tengo una botonera desde la que se cargan diferentes peliculas en un moviclip de la pelicula principal. El tema de la cargas externas mas o menos ya lo controlo usando la clase loadmovie, ya que con la clase MovieClipLoader me parece mas complicado y no lo controlo tanto. Mi problema esta en que querria mostrar la siguiente pelicula (cuando se haga clic en un boton del menu) justo despues de que la carga de esta se haya completado, pero mientras tanto, se siga mostrando la pelicula actual. Para situarnos mejor: si estoy mostrando la pelicula A, y pulso el boton que me cargue la pelicula B, quiero mostrar en una esquina la barra de estado de la carga pero que se siga mostrando la pelicula A (aunque no se pueda hacer nada mientras esta se muestra), y en el momento que se termine la carga se salte a la Pelicula B. De esta forma quedaria la navegacion entre peliculas mas fluida.

Por favor, creo que no sera muy complicado para muchos de vosotros, asi que si podeis ayudarme contestandome con alguna solucion o algun post de este foro en el que el problema este resuelto me haria un gran favor.

Muchas gracias por adelantado y un saludo a todos. :wink:

Por kakis

35 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Jun 2007 06:08 am
¿Alguien puede ayudarme con esto? :(

Por kakis

35 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 13 Jun 2007 01:58 pm
Tienes que trabajar con movieclips vacios creados desde codigo

La siguiente función trabaja con dos clips Carga1, y Carga2,

En Carga1 siempre se cargará la nueva pelicula externa, y en Carga2, estará la pelicula que se estaba reproduciendo antes de cargar otra nueva.

Código :

// este código debe ir en el primer fotograma de tu pelicula principal
CargaExterna = function (NombreSWF) {
   _root.Carga1._name = "Carga2"; // le da otro nombre para cargar sobre Carga1 la nueva pelicula
   _root.createEmptyMovieClip("Carga1", 1); // Crea clip vacio
   _root.Carga1._x = 150; // posición x en pixeles
   _root.Carga1._y = 225; // posición y
   _root.Carga1._visible = false; // lo hace invisible hasta que se termine de cargar
   _root.Carga1.loadMovie(NombreSWF);
   // ---- aqui pones el codigo para controlar la carga del swf


   // y cuando detectas la que termino la carga haces visible el clip cargado, y desapareces el anterior
   _root.Carga1._visible = true;
   _root.Carga2.removeMovieClip();
}


// en el codigo de tus botones llama a la función anterior para cargar el SWF
_root.CargaExterna("externa1.swf"); // cambiando "externa1.swf" por la pelicula que corresponde a cada botón

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 13 Jun 2007 05:09 pm
muchas gracias gabynufe,

Me pondre a hacer pruebas con este codigo que me has pasado y ya te comentare que tal me ha ido :lol:

Gracias de nuevo y un saludo

Por kakis

35 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Jun 2007 06:38 pm
Hola gabinufe,

He estado probando tu codigo, y funciona correctamente, gracias!! pero me gustaria mostrar una barra que indique el estado de la carga de la segunda pelicula. Yo he hecho varias peliculas flash con precargas y no he tenido ningun problema, ya que me habia limitado a seguir el tutorial de precargas de esta web (se hace la precarga de la unica pelicula que se va a mostrar en la escena 1, y cuando se termine la carga, se pase a la siguiente escena). En este caso no se como controlar los bytes cargados de un loadMovie, ya que he estado probando con getBytesLoaded() y getBytesTotal(), pero no funciona.

¿Podría ayudarme alguien?

Saludos

Por kakis

35 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Jun 2007 11:10 pm

Código :

root.Carga1.loadMovie(NombreSWF);
_root.onEnterFrame = function () {
   if (_root.Carga1.getBytesTotal() > 4 and _root.Carga1.getBytesLoaded()  == _root.Carga1.getBytesTotal()) {
      _root.onEnterFrame = null;
      // termino de cargar la pelicula
      // aqui pones el codigo para cuando termina la carga
      _root.Carga1._visible = true;
      _root.Carga2.removeMovieClip();
      return;
   }
   // aqui pones el codigo para actualizar la barra de carga usando
   //  _root.Carga1.getBytesLoaded()  y _root.Carga1.getBytesTotal()
}

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 20 Jun 2007 11:41 am
gracias gabynufe!

voy a probar el codigo este a ver que tal vá :wink: y te comento como me ha ido.

Saludos

Por kakis

35 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 22 Jun 2007 06:25 am
Hola,
He estado probando el codigo que me indicaste anteriormente, pero sigo sin cosnseguir que funcione correctamente :( En la siguiente direccion : http://garaje.ya.com/cenitest/carga_moviecliploader_anidadas.html pueden ver un ejemplo que he creado para poder visualizar si cargo correctamente una pelicula swf con la clase MovieClipLoader (Estube probando con la clase loadMovie pero tampoco lo consigo).
Comento que es lo que sucede: Al entrar en esa web, se precarga la pelicula "peli_test.swf", que tiene un boton que hace que se cargue "peli_test2.swf" sobre ella. Esta segunda pelicula es similar a la anterior, pero con un color distinto ( :oops: simplemente es un ejemplo para poder comprobar si cargo correctamente la pelicula, y necesito una pelicula de al menos 100Kb para poder apreciar la carga)
Lo que pretendo conseguir es que si se pulsa el boton de la peli_test.swf, se proceda a la precarga de la peli_test2, pero que siga visible peli_test hasta que se termine de cargar la segunda, y una vez cargada esta, solo se muestre peli_test2. Como pueden ver en la web de ejemplo, mientras se hace la precarga, no se muestra nada, y eso no es lo que quiero :cry:

En este direccion he subido los archivos .fla y .swf necesarios, por si alguien puede echarles un vistazo (no son muy complejos, por lo que no les llevara mas de cinco minutos):

http://rapidshare.com/files/38377459/prueba_moviecliploader.zip.html

Espero que alguien me ayude.
Saludos.

Por kakis

35 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 22 Jun 2007 08:33 pm
Hola... Lamento no poder aportar algo a este post.

Escribo para preguntarle al autor si lo que desea hacer es algo parecido a lo que yo quiero hacer (explicado en este post)

Por Lenyman

3 de clabLevel



 

opera
Citar            
MensajeEscrito el 25 Jun 2007 11:52 am
Hola Lenyman,

Pues yo creo que ambos queremos hacer lo mismo, aunque yo solo quiero cargar una peli mientras se muestra otra, y tu deseas cargar varias, o al menos eso he entendido yo.
Yo he estado unos dias haciendo pruebas pero sigo sin conseguir lo que queremos, asi que esperemos que alguien nos ayude y nos saque de dudas a los dos... de hecho, voy a aprov echar este post a ver si alguien puede ayudarnos, y asi se matan dos pajaros de un tiro :cool:

Yo seguire probando, y si lo consigo, te aviso.

Suerte y un saludo.

Por kakis

35 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 25 Jun 2007 11:00 pm
Wow... pues si.... yo estoy intentando por mi lado tambien... y te aviso cualquier avance. :wink:

Mientras.... ojalá aparezca algún alma caritativa (e inteligente) :roll:

SAludos

Por Lenyman

3 de clabLevel



 

opera
Citar            
MensajeEscrito el 25 Jun 2007 11:06 pm
No uses MovieClipLoader, este codigo ya lo probe y si funciona:

Código :

// este código debe ir en el primer fotograma de tu pelicula principal
//************************************************************************
DetectaCarga = function () {
   if (_root.Carga1.getBytesTotal() > 4 and _root.Carga1.getBytesLoaded()  == _root.Carga1.getBytesTotal()) {
      _root.onEnterFrame = null;      // termino de cargar la pelicula
      // aqui pones el codigo para cuando termina la carga
      _root.Carga1._visible = true;
      _root.Carga2.removeMovieClip();
      return;
   }
   porcentaje = Math.round((_root.Carga1.getBytesLoaded()*100)/_root.Carga1.getBytesTotal());
   _root.texto.text = porcentaje;
}
//************************************************************************
CargaExterna = function (NombreSWF) {
   _root.Carga1._name = "Carga2"; // le da otro nombre para cargar sobre Carga1 la nueva pelicula
   _root.Carga2.swapDepths(2);
   _root.createEmptyMovieClip("Carga1", 1); // Crea clip vacio
   _root.Carga1._x = 40; // posición x en pixeles
   _root.Carga1._y = 47.5; // posición y
   _root.Carga1._visible = false; // lo hace invisible hasta que se termine de cargar
   _root.Carga1.loadMovie(NombreSWF);
   _root.onEnterFrame = DetectaCarga;
}
//************************************************************************
_root.CargaExterna("peli_test.swf");


Este otro codigo lo pones en el primer fotograma de tu "peli_test.fla"

Código :

mc_boton.onRelease = function() {
   //Aqui le decimos a nuestro MovieClipLoader que cargue el archivo
   //"pelicula.swf" y que lo muestre en "carga_mc" :D
   _root.CargaExterna("peli_test2.swf");
};


Le hice unos ajustes al codigo...

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 27 Jun 2007 08:56 am
Gracias gabynufe,

En cuanto pueda, probare el codigo y te comento.

Saludos :wink:

Por kakis

35 de clabLevel



Genero:Masculino  

msie

 

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