Comunidad de diseño web y desarrollo en internet online

funcion solo funciona despues de 2 clicks

Citar            
MensajeEscrito el 21 May 2007 07:41 pm
Hola, he hecho un cargador de peliculas donde se hace una carga simultánea de todas las películas y se ajustan para que se vean los "thumbnails", cuando oprimo un botón se repite el proceso pero cambiando el orden de las peliculas de modo que hace algo parecido a una galería de fotos, todo funciona de maravilla excepto por una cosa: no empiezan a funcionar los botones sino hasta después de dar dos clicks sobre alguno de ellos, después de eso, todo anda de maravilla.
el código en el primer frame es:

Código :

//Oculto el menú del click derecho.
Stage.showMenu = false;
//array con las peliculas a cargar
var pelis:Array = new Array();
pelis = ["1.swf", "2.swf", "3.swf", "4.swf", "5.swf"];
//posibles combinaciones de carga
var posibles:Array = new Array();
posibles = [[0, 1, 2, 3, 4], [1, 0, 2, 3, 4], [2, 0, 1, 3, 4], [3, 0, 1, 2, 4], [4, 0, 1, 2, 3]];
//pob controla que posible escenario de carga está activo
var pob:Number = 0;
//acciones para los botones que intercambian las peliculas
carga1.onRelease = function() {
   pob = posibles[pob][1];
   recargar();
};
carga2.onRelease = function() {
   pob = posibles[pob][2];
   recargar();
};
carga3.onRelease = function() {
   pob = posibles[pob][3];
   recargar();
};
carga4.onRelease = function() {
   pob = posibles[pob][4];
   recargar();
};
//esta funcion carga las peliculas es su respectivo espacio
function recargar() {
   //trace("funcion recargar activada");
   //el espacio principal es diferente, por lo tanto se le asignan las propiedades aparte
   //palicula es la variable que le dice que pelicula cargar
   banner_container.pelicula = pelis[posibles[pob][0]];
   //alto y ancho son las posiciones _y y _x respectivamente, del preloader
   banner_container.alto = 124;
   banner_container.ancho = 200;
   //wi y he son las medidad de tamaño final de la pelicula cargada
   banner_container.wi = 488;
   banner_container.he = 270;
   //nombre es una variable para poder mantener cada preloader dentro de los movieclips y poderlos
   //mantener independientes
   banner_container.nombre = banner_container;
   //le doy via libre para que funcione con los parámetros que le di
   banner_container.gotoAndPlay(2);
   //los demás campos son similares, se les asignan las propiedades en grupo.
   for (i=1; i<=4; i++) {
      eval("thumb_cont"+i).alto = 20;
      eval("thumb_cont"+i).ancho = 55;
      eval("thumb_cont"+i).wi = 152;
      eval("thumb_cont"+i).he = 65;
      eval("thumb_cont"+i).nombre = eval("thumb_cont"+i);
      eval("thumb_cont"+i).pelicula = pelis[posibles[pob][i]];
      eval("thumb_cont"+i).gotoAndPlay(2);
   }
}
//llamo la función la primera vez para que quede listo para trabajar
recargar();


y tengo un mc en la libreria que se llama cargador las estancias de cargador son los containers, en el primer frame hay un stop(); y en el segundo esto:

Código :

//creo el mc para cargar la pelicula
this.createEmptyMovieClip("container",this.getNextHighestDepth());
//preparo el mcloader
var precargador:MovieClipLoader = new MovieClipLoader();
//creo el listener
var listener:Object = new Object();
//funcion para introducir la barra de carga
listener.onLoadStart = function(target_mc) {
   attachMovie("preload","preload",eval(nombre).getNextHighestDepth());
   eval(nombre).preload._y = alto;
   eval(nombre).preload._x = ancho;
};
//la barra de carga se mueve
listener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
   var porcentaje:Number;
   porcentaje = Math.round((loadedBytes*100)/totalBytes);
   eval(nombre).preload.gotoAndStop(porcentaje);
   target_mc._visible = false;
   target_mc.stop();
};
//se elimina la barra y se muestra el resultado
listener.onLoadComplete = function(target_mc) {
   eval(nombre).preload.removeMovieClip();
   target_mc._visible = true;
   target_mc.play();
};
//redimenciono el mc cargado
listener.onLoadInit =function(target_mc) {
   target_mc._width = wi;
   target_mc._height = he;
}
//se vincula el listener al precargador
precargador.addListener(listener);
//se acciona el precargador
precargador.loadClip(pelicula,container);


podría introducir todo en un zip si alguien lo solicita, está completo y lo que hace es todo lo que necesito, pero solo tengo el inconveniente de ese doble click.

Cualquier ayuda o duda, bienvenida.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 22 May 2007 06:36 am
Empezando por que podrías optimizar tu código con prototipos en vez de hacer una función para cada elemento.

Código :

MovieClip.prototype.gritar=function(arreglo:Array){
   this.onRelease=function(){
      recargar(arreglo);
   }
}

Código :

carga1.gritar([0, 1, 2, 3, 4]);
carga2.gritar([1, 0, 2, 3, 4]);


Si quieres pasame el fla y veo que puede ser, por que ya tengo bastante sueño y no me concentro bien :(

saludos ^^

Por bryanisimo

664 de clabLevel



Genero:Masculino  

Geek

firefox
Citar            
MensajeEscrito el 22 May 2007 03:31 pm
No conocía lo del prototype, lo voy a probar, cuando llegue a la casa posteo el .fla
Gracias.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 25 May 2007 12:10 am
Hola, el archivo está en http://200.31.197.13/flash/rotatorio.fla
No cambié el código del prototype porque no tuve mucho tiempo de ojearlo sino hasta hoy, agradezco cualquier luz que pueda alguien darme sobre este asunto :?

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 29 May 2007 05:29 pm
Sigo dándole vueltas a esto y nada, por favor alguien dígame aunque sea que es un bug conocido o algo, por mas revisadas que le doy no entiendo el error.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 03 Jun 2007 11:48 pm
Intenté hacer lo del prototype y resulté con esto:

Código :

MovieClip.prototype.gritar = function(que:Number) {
   this.onRelease = function() {
      pob = posibles[pob][que];
      trace(pob);
      recargar();
   };
};
carga1.gritar(1);
carga2.gritar(2);
carga3.gritar(3);
carga4.gritar(4);

Pero ahora no funcionan los botones y la función ni siquiera se activa, el trace nunca devuelve nada.
Ahora quedé más perdido que al principio.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox

 

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