Comunidad de diseño web y desarrollo en internet online

Acciones distintas para cada MC creado con duplicateMovieCli

Citar            
MensajeEscrito el 27 Dic 2005 09:52 pm
Hola amig@s,
Tengo el siguiente script para duplicar un MC varias veces, el problema esta en que quiero que cada boton realice una accion distinta:

Código :

for (i=1; i<=35; i++) {
   btn.duplicateMovieClip("btn"+i, (i+140)); // duplico el MC llamado btn
   this["btn"+i]._x = this["btn"+(i-1)]._x+btn._width; // situo el siguiente MC justo a la derecha del anterior
}


Y lo que quiero hacer es que para cada MC se cumpla lo siguiente:

Código :

btn1.onPress = function() {
   _parent._parent._parent._parent._parent.INS = 1;
   _parent._parent._parent._parent._parent.visual.CHAR.INS.loadMovie("badges/"+1+".swf");
};


Y asi hasta btn35 ...

Lo he probado con:

Código :

this["btn"+i].onPress = function() {
   _parent._parent._parent._parent._parent.INS = i;
   _parent._parent._parent._parent._parent.visual.CHAR.INS.loadMovie("badges/"+i+".swf");
};

(dentro del for)
Pero solo me hace caso el ultimo MC... Ya no se como ponerlo, se que es una cosa compleja pero hay una solucion segurisimo :)

Espero vuestras respuestas :wink:

ArgoN

Por -=ArgoN=-

3 de clabLevel



Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 28 Dic 2005 03:02 am
Hola

Lo q tenes q hacer en poner la asignacion del evento dentro del for

Código :

for (i=1; i<=35; i++) {
   btn.duplicateMovieClip("btn"+i, (i+140)); 
   this["btn"+i]._x = this["btn"+(i-1)]._x+btn._width;
   this["btn"+i].onPress = function() {
   _parent._parent._parent._parent._parent.INS = i;
  _parent._parent._parent._parent._parent.visual.CHAR.INS.loadMovie("badges/"+i+".swf");
};
}



Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 28 Dic 2005 05:04 am
Eso es lo que probé yo. Lo que me hace eso es generar un mismo evento para todos los MC's duplicados, es decir, si yo duplico 35 veces un mismo MC y le coloca instancias: MC1, MC2, etc..., al hacer click tanto en MC1 como en MC2 como en MCn me carga siempre el mismo .swf (que resulta ser el que genera el ultimo valor del "for"):
Siempre me carga:

... .loadMovie("badges/"+i+".swf"); // siendo i = 35

Creo que eso pasa porque el for corre hasta que i = 35 y se para ahi, otra cosa es que tu, al cabo de un rato le des al MC, y claro, como ya ha pasado bastante tiempo i ya es igual a 35 :(
No se como acoplar la duplicacion de los MC's con el evento de boton para cada MC duplicado...
No se si me he explicado mejor ahora :wink:

Saludos,

ArgoN

Por -=ArgoN=-

3 de clabLevel



Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 28 Dic 2005 05:44 am
es por que el i dentro de la funcion es diferente del i del for, podrian solucionarlo con un i global, o que la funcion reciba el i del for del duplicatemc


espero me entiendan.

Por J

148 de clabLevel



 

netscape
Citar            
MensajeEscrito el 28 Dic 2005 05:59 am
He probado poniendo:

this["btn"+i].onPress = function(i) {

Pero me devuelve un "undefined". He probado poniendo la i como _global.i en todas partes del script pero nada... Creo que es mas lo que pienso yo...

Creo que eso pasa porque el for corre hasta que i = 35 y se para ahi, otra cosa es que tu, al cabo de un rato le des al MC, y claro, como ya ha pasado bastante tiempo, i ya es igual a 35...


Ya me pensare otra forma de hacerlo, si asi no se puede...

ArgoN

Por -=ArgoN=-

3 de clabLevel



Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 28 Dic 2005 08:17 am
1. tienes que nombrar la funcion y llamarla en el onPress. es por eso que te sale undefined, y en lo personal en algonos proyectos muy parecidos con _global.i a funcionado bien.

2. solo como consejo, por que no usas un direccionamiento absoluto, en ves del _parent._parent. ....etc.

si queres subis el fla. para echarle una ojeada.

Por J

148 de clabLevel



 

netscape
Citar            
MensajeEscrito el 28 Dic 2005 09:29 am
no se si te sirva de algo pero mira este codigo,

adicione un i a cada instancia de boton (es algo provisional) :? , pero funciona, mientras te den otra solucion.

stop();
for (i=1; i<=35; i++) {
btn.duplicateMovieClip("btn"+i,i);
this["btn"+i].i= i;
this["btn"+i]._y =10;
this["btn"+i]._x = this["btn"+(i-1)]._x+this["btn"+(i-1)]._width;
this["btn"+i].onPress=function(){
trace(this.i);
}
}
[/code]

Por J

148 de clabLevel



 

netscape
Citar            
MensajeEscrito el 28 Dic 2005 09:38 pm
Esto fue lo que me respondieron en el foro de desarrollo web. En efecto hay gente que tiene buenas ideas ^^

Código :

for (i=1; i<=35; i++) {
   //duplicamos el mc "btn" y hacemos referencia a él mediante: "btn_ref"
   btn_ref = btn.duplicateMovieClip("btn"+i, i+140);
   //posicionamos cada nuevo mc duplicado justo despues del anterior
   btn_ref._x = i*btn._width+btn._x;
   //acción para cada nuevo mc duplicado
   btn_ref.onRelease = function() {
      trace(this._name);
   };
}


Gracias a vosotros tambien por darme respuestas :)

Have fun!!

ArgoN

Por -=ArgoN=-

3 de clabLevel



Genero:Masculino  

Barcelona

firefox

 

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