Comunidad de diseño web y desarrollo en internet online

Array + Bucle For + Onrollover.

Citar            
MensajeEscrito el 19 Ene 2009 12:28 pm
Saludos a todos!! A ver si estructurandome se me entiende...

Lo que tengo:
4 botones, 1 array con 4 titulos de cancion, 1 campo de texto.

Lo que quiero hacer:
Aprovechar un bucle para darle una accion a los botones, y al mismo tiempo rellenar el campo de texto en otro movieclip con el valor de un array:
boton1 , texto=array[1]
boton2 , texto=array[2]
etc...

Mi codigo:

Código :

  
titulos_mp3 = new Array("cancion1.mp3","cancion2.mp3","cancion3.mp3","cancion4.mp3" );

     for( i=0 ; i<4 ; i++)
     {   
   _root["boton"+i].onRollOver = function ()
        {
                _root.title_mc.text =titulos_mp3[i];
      _root.title_mc.gotoAndPlay(2);
        }
     }

El problema:
Siempre me coje el valor del condicional del bucle, en este caso 4, la cuarta posición del array, en este caso también, "undefined". Que supongo yo que se recorre todo el bucle i el rollOver se ejecuta después de recorrer el bucle...
Qué me falla?
como podria montarmelo para el dia que tenga 200.000 botones?
Gracias a todos de antemano! ^^

Por Fran666

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ene 2009 01:47 pm
acordate de que el conteo de los array empieza por 0, por lo que:
titulos_mp3[0] = "cancion1.mp3"
titulos_mp3[1] = "cancion2.mp3"
titulos_mp3[2] = "cancion3.mp3"
titulos_mp3[3] = "cancion4.mp3"
titulos_mp3[4] = undefined

titulos_mp3.legth = 3 //devuelve el tamaño del array

por lo que el for es mejor asi:

for( i=0 ; i<titulos_mp3.legth ; i++)

Por fermmm

Claber

122 de clabLevel



 

chrome
Citar            
MensajeEscrito el 28 Ene 2009 05:37 pm
Vales, tienes razon. ^^
Pero sigo teniendo el problema que siempre coje la última vuelta del bucle.
Se me ha aparecido el problema en otro ejemplo.

for (var i = 0; i<10; i++)
{
objBtn.onRelease = function()
{
trace(i);
}

}

los objBtn son movieclips, que en su onRelease, ejecutan la funcion anterior... i el trace siempre da de resultado 9.

Socorrooooooooooooooooo... :shock:

Por Fran666

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ene 2009 09:27 am
Vale, ya me lo he apanyao...

Digamos que tenia esta historia:

for (var i = 0; i<resultados; i++) {
// -- creo un clip de película vacio
objBtn = _root.createEmptyMovieClip("diapo"+i, i+100);
objBtn.createEmptyMovieClip("contenedor",1);
// -- cargo la imágen el clip vacio
objBtn.contenedor.loadMovie(miniatura);
objBtn.onRelease = function() {
trace(i);
}
}

I el trace siempre sacaba el último resultado, hiciera click donde hiciera... Incluso si le decia trace(miniatura) que és una ruta de una imagen, siempre me sacaba la ruta de la última imagen que sacaba del xml... Lo he apanyao así:

for (var i = 0; i<resultados; i++) {
// -- creo un clip de película vacio
objBtn = _root.createEmptyMovieClip("diapo"+i, i+100);
objBtn.createEmptyMovieClip("contenedor",1);
// -- cargo la imágen el clip vacio
objBtn.contenedor.loadMovie(miniatura);
objBtn.name = miniatura;//le doy un nombre al movieclip
objBtn.onRelease = function() {
trace(this.name);//hago referencia al nombre
}
}
así, llamando al nombre, si que pue me responde correctamente y puedo jugar con los botones creados al vuelo...
joer...ke descanso... y que tonteria!!!

Por Fran666

5 de clabLevel



 

firefox

 

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