Foros del Web » Creando para Internet » Flash y Actionscript »

Problema con duplicateMovieClip dentro de un FOR

Estas en el tema de Problema con duplicateMovieClip dentro de un FOR en el foro de Flash y Actionscript en Foros del Web. Hola gente, que tal. Programando en AS 2 me surgio la necesidad de crear lo siguiente: Un for que duplique movie clips hasta un determinado ...
  #1 (permalink)  
Antiguo 19/12/2009, 19:57
Avatar de elias77  
Fecha de Ingreso: noviembre-2005
Ubicación: Buscame...
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 11
Problema con duplicateMovieClip dentro de un FOR

Hola gente, que tal.
Programando en AS 2 me surgio la necesidad de crear lo siguiente:

Un for que duplique movie clips hasta un determinado numero (en este caso 6) y a la vez que los duplica, los reacomode y les asigne un nombre de instancia de movie clip distinto a cada uno

Cita:
for (i=0; i<6; i++) {
//Duplico el MC "item" y lo llamo "item_nuevo"
duplicateMovieClip(item, "item_nuevo",0);
//a la var "item_anterior_y" le sumo 20
item_anterior_y = item_anterior_y + 20;
//al mc que duplique lo reacomodo
item_nuevo._y = item_anterior_y;
//renombro a "item_nuevo" con el nombre "item"seguido del valor de "i" del bucle
item_nuevo._name=("item"+i);

}
El problema es que duplica un solo MC y no 5 como deberia... es como que lo pisa y lo vuelve a hacer hasta 5, creo que el problema es al asignarle el nombre. Al nombre se lo asigna correctamente porque ya lo probe, pero solo se crea el ultimo clip... es decir el que lleva el nombre "item5". Espero me que puedan ayudar, gracias!!...
__________________
You're face to face, with the man who sold the world - NIRVANA
Diese stadt ist eine Dirne, hat rote flecken auf der Stirn - RAMMSTEIN
  #2 (permalink)  
Antiguo 20/12/2009, 00:22
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 19 años, 4 meses
Puntos: 23
Respuesta: Problema con duplicateMovieClip dentro de un FOR

Que tal amigo!!

El problema es que tu lógica esta un poco mal. Te explico:

1.- Cuando haces referencia al objeto item_nuevo para incrementar la propiedad _y, solo haces referencia a ese mismo objeto osea item_nuevo y no a los 6 objetos supuestamente creados (Que por cierto si se crean).

2.- No sabes como acceder a los 6 objetos que creaste. Pero yo te voy a enseñar.

3.- No haz declarado la variable item_anterior_y. Puesto que en flash las variables son multidatos, flash no sabe que tipo de variable es hasta que le asignes un valor.

He aqui la solucion.
Código actionscript:
Ver original
  1. //Primero asignamos el valor para las Y
  2. item_anterior_y = 0;
  3. for (i=0; i<6; i++) {
  4. //Aquí le asignamos un profundidad especifica pues después lo vamos a necesitar.
  5. //y en vez de poner 0 ponemos la i
  6.     duplicateMovieClip(item, "item_nuevo", i);
  7.     item_anterior_y = item_anterior_y+20;
  8. //Aquí viene el truco: A un variable le asignamos el objeto que esta en determinada profundidad
  9.     Mc = _root.getInstanceAtDepth(i);
  10. //Esa variable ya tiene las propiedades de dicho objeto y podemos manipularlo
  11.     Mc._y = item_anterior_y;
  12.     item_nuevo._name=("item"+i);
  13. }

Bueno como veras fue muy fácil y espero te haya servido.
__________________
Un buen programa depende de la imaginación.
  #3 (permalink)  
Antiguo 20/12/2009, 09:46
Avatar de elias77  
Fecha de Ingreso: noviembre-2005
Ubicación: Buscame...
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 11
Respuesta: Problema con duplicateMovieClip dentro de un FOR

Muchas gracias Turdo. En realidad a item_anterior_y lo habia declarado solo que no lo copie, copie unicamente el for. Y el problema fue en el procedimiento de crear el item_nuevo luego acomodandolo y despues renombrandolo.

Gracias, me sirvió mucho.
__________________
You're face to face, with the man who sold the world - NIRVANA
Diese stadt ist eine Dirne, hat rote flecken auf der Stirn - RAMMSTEIN
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:58.