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

Acciones distintas para cada MC creado con duplicateMovieClip.

Estas en el tema de Acciones distintas para cada MC creado con duplicateMovieClip. en el foro de Flash y Actionscript en Foros del Web. Hola amig@s, Tengo el siguiente script para duplicar un MC varias veces, el problema esta en que quiero que cada MC al presionarlo realice una ...
  #1 (permalink)  
Antiguo 27/12/2005, 14:45
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 5 meses
Puntos: 1
Pregunta Acciones distintas para cada MC creado con duplicateMovieClip.

Hola amig@s,
Tengo el siguiente script para duplicar un MC varias veces, el problema esta en que quiero que cada MC al presionarlo 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

ArgoN

Última edición por -=ArgoN=-; 27/12/2005 a las 21:20
  #2 (permalink)  
Antiguo 28/12/2005, 07:50
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años
Puntos: 0
no es tan complejo mi buen amigo Argon:
Código PHP:
/*CODIGO ACTION SCRIPT*/
for(i=1;i<=10;i++){
    
//duplicamos el mc 'btn' y hacemos referencia a él mediante: 'btn_ref'
    
btn_ref btn.duplicateMovieClip('btn'+i,i);
    
//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);}
}
stop(); 
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #3 (permalink)  
Antiguo 28/12/2005, 14:49
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 5 meses
Puntos: 1
Cita:
btn_ref = btn.duplicateMovieClip('btn'+i,i);
Hummm! No sabia que se pudiera igualar una variable a una duplicacion de MC
Magnifico luistar magnifico

ArgoN
  #4 (permalink)  
Antiguo 28/12/2005, 15:08
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 5 meses
Puntos: 1
Uf uf, lo acabo de probar y me ha surgido otro problema Cuando coloco esta linia de codigo dentro del on(release) siempre me carga el mismo .swf (el ultimo):

Código:
visual.CHAR.INS.loadMovie("badges/"+i+".swf"); 
El codigo quedaria algo asi:

Código:
for (i=1; i<=35; i++) {
	btn_ref = btn.duplicateMovieClip("btn"+i, i+140);
	btn_ref._x = (i-1)*btn._width+btn._x;
	btn_ref.onRelease = function() {
		visual.CHAR.INS.loadMovie("badges/"+i+".swf");
		trace(this._name);
	};
}
Nota: (i-1) esto lo añadi para que la duplicacion empieze desde x = 0

Seguro que hago algo mal

Gracias de nuevo

ArgoN

Última edición por -=ArgoN=-; 28/12/2005 a las 15:17
  #5 (permalink)  
Antiguo 28/12/2005, 15:37
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años
Puntos: 0
es que toma el último valor de i puesto que éste no mantiene su valor
para conservar la variable 'i' para cada mc duplicado le tenemos que pasar como otra variable para c/mc duplicado, así:
Código PHP:
/*CODIGO ACTION SCRIPT*/
for (i=1i<=10i++) {
    
//duplicamos el mc 'btn' y hacemos referencia a él mediante: 'btn_ref' 
    
btn_ref btn.duplicateMovieClip('btn'+ii);
    
//para manetener la variable i creamos una variable 'nro' en cada mc duplicado
    
btn_ref.nro i;
    
//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.nro);
    };
}
stop(); 
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #6 (permalink)  
Antiguo 28/12/2005, 15:55
 
Fecha de Ingreso: julio-2004
Mensajes: 71
Antigüedad: 19 años, 8 meses
Puntos: 0
leyendo...

lo k pasa es...
ejecutas el ciclo for... y "i" termina en 35 ¬¬''

bueno i a kedado en 35..

entonces cuando le haces click a los botones...

la i sigue siendo 35 ¬¬''
osea cargas el ultimo

lo que puedes hacer es...

Código:
for (i=1; i<=35; i++) {
	btn_ref = btn.duplicateMovieClip("btn"+i, i+140);
	btn_ref._x = (i-1)*btn._width+btn._x;
	btn_ref.onRelease = function() {
		var numId = this._name.split("n");
		visual.CHAR.INS.loadMovie("badges/"+numId[1]+".swf");
	};
}
lo que haces ahi.. es generar una variable llamada "numId" xD
con un split del nombre osea... recorres el nombre hasta que encuentras la letra "n" y lo separas...
entonces despues...
cuando apretas el boton... lo que haces es encontrar lo que esta despues de n osea el numero y cargar la peli que en vez de i ahora es numId que seria el numero que tienes en el nombre :P

ahora si te funca todo?

pd: creo k mi explicacion no es muy clara ... pero el codigo si lo es ;)

nos vemos :D
__________________
http://www.plotz.cl
Desarrollador Flash
  #7 (permalink)  
Antiguo 28/12/2005, 16:01
 
Fecha de Ingreso: julio-2004
Mensajes: 71
Antigüedad: 19 años, 8 meses
Puntos: 0
xD

don luistar respondio antes de que yo apretara "Enviar Respuesta"


xD

eso si que es tener un buen fedback en el foro :D
__________________
http://www.plotz.cl
Desarrollador Flash
  #8 (permalink)  
Antiguo 28/12/2005, 16:21
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 5 meses
Puntos: 1
Muchas gracias amigos!! les quiero mucho

He cogido el script por orden de aparicion, es decir, he probado el de luistar y funciona a la perfeccion. Tambien he probado el script de plotz! pero no me ha dado resultado... lo he revisado pero no veo nada... Gracias por todo de nuevo

ArgoN
  #9 (permalink)  
Antiguo 28/12/2005, 16:26
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 5 meses
Puntos: 1
Uff fue culpa mia plotz! 1000 disculpas, sorry, perdon xD Sin querer tenia pegado el script 2 veces, por eso no iba
Tambien queria preguntar algo sobre código. Ya que os veo puestos... xD

Tengo en casi todos los .swf de mi pagina web una variable global: _global.idioma. En los .swf publicados desde el Flash MX el uso de esa variable me funciona perfectamente, en cambio cuando publico una pelicula desde el Flash 8, al distinguir dos opciones mediante:

Código:
if(_global.idioma=="E"){
    trace("español");
}else{
    trace("inglés");
}
Entonces no me contempla el caso cuando _global.idioma = "E", es como si esa variable no tuviese ningun valor No se a que se puede deber. ¿Influye que por algun sitio haya una variable qe se llame idioma, sin el _global?

Gracias por vuestras respuestas Todo esto me lo voy apuntando para proximas ocasiones jeje

ArgoN

Última edición por -=ArgoN=-; 28/12/2005 a las 16:45
  #10 (permalink)  
Antiguo 28/12/2005, 16:43
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años
Puntos: 0
claro...
también es válido tomar la ulima porcion del nombre, que es precisamente 'i':

aki otra manera de hacer esto último
Código PHP:
/*CODIGO ACTION SCRIPT*/ 
for(i=1;i<=10;i++){ 
    
//duplicamos el mc 'btn' y hacemos referencia a él mediante: 'btn_ref' 
    
btn_ref btn.duplicateMovieClip('btn'+i,i); 
    
//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.substr(3));} 

stop(); 
- una de las maneras, como lo del amigo plotz
cortamos el nombre donde aparezca el caracter 'n':
var nombre_id = this._name.split("n");
y tomamos la segunda parte:
nombre_id[1] que contendrá el valor de 'i'

- la otra manera: tomamos directamente los valores a partir del tercer caracter:
this._name.substr(3)); , contendrá el valor de 'i'
como en el último ejemplo que puse

:D
saludos
__________________
Si digo que soy mentiroso. ¿Lo soy?
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 00:02.