Comunidad de diseño web y desarrollo en internet online

problema con "i" contador en bucle for

Citar            
MensajeEscrito el 09 Nov 2005 01:36 pm
Hola a todos:
Tengo el siguiente código en un frame:

Código :

for(i=0;i<totalRecords;i++){
   ruta=thoughts_xml.firstChild.childNodes[i];
   nuevo=proyecto_mc.duplicateMovieClip("proyecto_mc"+i,i);
   nuevo._x=proyecto_mc._x;
   nuevo._y=proyecto_mc._y+proyecto_mc._height*(i+0.9);
   nuevo._alpha=0;
   nuevo.nombre.text=ruta.attributes.nombre;
   nuevo.descripcion.text=ruta.attributes.descripcion;
nuevo.thumbnail.objeto.loadMovie("imagenes/"+ruta.attributes.thumbnail+_root.nocache);
   nuevo.alphaTo(100,1,"linear",0.3*i);
   //eventos del boton
   nuevo.onPress = function() {
      _root.pelicula_mc.removeMovieClip();
      _root.createEmptyMovieClip("pelicula_mc",10);
      _root.pelicula_mc._x=Stage/2;
      _root.pelicula_mc._y=Stage/2;
      _root.precargador_mcl.loadClip("swf/"+ruta.attributes.clip+_root.nocache,_root.pelicula_mc);
      _root.seccion_mc.gotoAndPlay("outro");
   }
}
proyecto_mc._visible=0;
stop();


_root.precargador_mcl.loadClip("swf/"+ruta.attributes.clip+_root.nocache,_root.pelicula_mc);
El problema esta en esta parte en negrita. Ahi es donde le digo al cada clip de proyecto que al hacer clic cargue un swf que tiene su "ruta" en el xml, pero parece ser que:
dentro de la funcion del evento onPress la "i" adquiere el ultimo valor del for, en mi caso 2.
De esta forma todos los botones cargan el ultimo swf y no el que corresponde. Como arreglo esto?

Por frenadoll

922 de clabLevel

6 tutoriales

Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 09 Nov 2005 02:26 pm
Lo que me parece sería el problema es que te basas en la variable ruta que no es de que cada objeto, entonces lo que le estas diciendo al objeto es que cargue ruta pero este vale el ultimo valor del for.

En caso de ser ese el problema: la solucion seria crear ruta dentro de cada objeto y referir a ella dentro del objeto, o sea, this.ruta.

Espero sea eso y lo puedas solucionar.

Por gparis

112 de clabLevel



 

Uruguay

msie
Citar            
MensajeEscrito el 09 Nov 2005 03:35 pm
siendo "nuevo" son todas tus MC, tienes q asignarles a cada una un identificador individual para q puedas tratarlas de manera diferente..
puedes hacer lo sig:

Antes de : nuevo.onPress = function() {
asignale un identificador
nuevo.id=i

ahora, haz la prueba

Código :

 nuevo.onPress = function() {
trace(this.id)
 


cada clip tiene su ID

Por chko

109 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 09 Nov 2005 04:32 pm
Bueno, la solucion del nuevo.id funciono genial, muchas gracias a los dos ^^

Una cosa, me podrias explicar como es esto de asignarle id a una variable como nuevo? no sabia esto, quiero decir que id no es ningun campo ni instancia... explicame :)

Por frenadoll

922 de clabLevel

6 tutoriales

Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 10 Nov 2005 01:38 am
ok, revisemos el codigo..

Código :

for(i=0;i<totalRecords;i++){
 nuevo=proyecto_mc.duplicateMovieClip("proyecto_mc"+i,i); 
}


aqui "nuevo" almacena a :
proyecto_mc0, proyecto_mc1, proyecto_mc2

ahora, a cada pelicula, es decir , a "nuevo" hay q asignarle una variable o identificador unico, en este caso "i",

Código :

nuevo.id=i

traducido:
proyecto_mc0.id=0
proyecto_mc1.id=1
proyecto_mc2.id=2

y listo, cada MC tiene una variable (id) que lo identifica de las demas..

ahora, en el evento onPress()
cada pelicula despliega su propio id

Por chko

109 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 10 Nov 2005 09:16 am
Ok ahora si lo entendi, muchas gracias de nuevo :)

Por frenadoll

922 de clabLevel

6 tutoriales

Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 10 Nov 2005 10:13 pm
jeje a mi tambien me funciono gracias

Por Marmota-foo

23 de clabLevel



Genero:Masculino  

mexico...especificamente desde la roka

opera
Citar            
MensajeEscrito el 10 Nov 2005 10:20 pm
Juas, yo buscaba eso tambien, lo probare....
Gracias de antemano...

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox

 

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