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

Controlar Clips creados con AS mediante Botones creados con AS

Estas en el tema de Controlar Clips creados con AS mediante Botones creados con AS en el foro de Flash y Actionscript en Foros del Web. hola, disculpen la molestia nuevamente. El problema es el siguiente: Código: // CANTIDAD DE BOTONES cantidad = 5; fila = 0; // PEGO LOS CLIPS ...
  #1 (permalink)  
Antiguo 11/02/2006, 08:23
Avatar de m_sassa  
Fecha de Ingreso: noviembre-2002
Ubicación: Rio Cuarto - Córdoba - Argentina
Mensajes: 299
Antigüedad: 22 años
Puntos: 0
Controlar Clips creados con AS mediante Botones creados con AS

hola, disculpen la molestia nuevamente. El problema es el siguiente:

Código:
// CANTIDAD DE BOTONES
cantidad = 5;
fila = 0;

// PEGO LOS CLIPS CON SUS RESPECTIVOS BOTONES
for (i=0; i<cantidad; i++) {
	if ((i%3) == 1) {
		loc_x = 0;
	}
	if ((i%3) == 2) {
		loc_x = 130;
	}
	if ((i%3) == 0) {
		loc_x = 260;
	}
	if ((i%3) == 0 && (i != 0)) {
		fila += 115;
	}

	// PEGO LOS CLIPS
	attachMovie("boton_ed", "boton_ed"+i, getNextHighestDepth());
	this["boton_ed"+i]._x = loc_x;
	this["boton_ed"+i]._y = fila;
	
	
	// PEGO LOS BOTONES
	attachMovie("boton_inv", "boton_inv"+i, getNextHighestDepth());
	this["boton_inv"+i]._x = loc_x;
	this["boton_inv"+i]._y = fila;
	this["boton_inv"+i].xid = i;
	
	// ACA LO QUE QUIERO ES QUE CON CADA BOTON QUE CREO SE CONTROLE 
	// UNO DE LOS CLIPS PEGADOS ANTERIORMENTE. O SEA EL boton_inv1 
	// DEBERIA CONTROLAR EL CLIP boton_ed1
	this["boton_inv"+i].onRollOver = function() {
		_parent["boton_ed"+this.xid].gotoAndPlay("emp");

	}
	
	
}
Bueno el codigo lo comente para que entiendan el problema. Seguramente el problema esta en la ruta _parent["boton_ed"+this.xid].gotoAndPlay("emp");

O sea, ya probe con:

- _parent["boton_ed"+this.xid].gotoAndPlay("emp");
- this["boton_ed"+this.xid].gotoAndPlay("emp");

y ninguno funciona. seguro que es la ruta.

por favor, ayuda.

gracias
__________________
"El paisano es la persona que lleva el paisaje en el alma"
Atahualpa Yupanqui
  #2 (permalink)  
Antiguo 11/02/2006, 09:18
Avatar de julio archila  
Fecha de Ingreso: marzo-2005
Ubicación: Quetzaltenango, Guatemala
Mensajes: 272
Antigüedad: 19 años, 8 meses
Puntos: 0
hola M Sassa:

yo tenia el mismo problema hace algun tiempo y lo solucione con esto, solo modificale un poco.

Código:
for (i=0; i<=5; i++) {
	botones[i].onRelease = function() {
		if (this == bt_1) {
			//funcion 
		}
		if (this == bt_2) {
			//funcion 
		}
		if (this == bt_3) {
			//funcion 
		}
		if (this == bt_4) {
			//funcion 
		}
		if (this == bt_5) {
			//funcion 
		}
	};
}
esto claro es para los botones, espero te sea de mucha ayuda.

Saludos ...
__________________
Julio Archila
  #3 (permalink)  
Antiguo 11/02/2006, 10:15
Avatar de m_sassa  
Fecha de Ingreso: noviembre-2002
Ubicación: Rio Cuarto - Córdoba - Argentina
Mensajes: 299
Antigüedad: 22 años
Puntos: 0
si, gracias, pero deberia funcionar asi, pues si tengo 200 botones, tengo que escribir 200 IF.... gracias de todos modos
__________________
"El paisano es la persona que lleva el paisaje en el alma"
Atahualpa Yupanqui
  #4 (permalink)  
Antiguo 11/02/2006, 11:59
Avatar de julio archila  
Fecha de Ingreso: marzo-2005
Ubicación: Quetzaltenango, Guatemala
Mensajes: 272
Antigüedad: 19 años, 8 meses
Puntos: 0
200 botones??? que exageración.
__________________
Julio Archila
  #5 (permalink)  
Antiguo 11/02/2006, 12:03
Avatar de m_sassa  
Fecha de Ingreso: noviembre-2002
Ubicación: Rio Cuarto - Córdoba - Argentina
Mensajes: 299
Antigüedad: 22 años
Puntos: 0
si, porque es un catalgo de productos..
__________________
"El paisano es la persona que lleva el paisaje en el alma"
Atahualpa Yupanqui
  #6 (permalink)  
Antiguo 11/02/2006, 14:11
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 10 meses
Puntos: 5
Buenas. Se me ocurre que no necesitás poner dos "botones", si usás directamente un movieClip, ya que a cualquier mc se le pueden asignar los mismos eventos que a un botón.

Podrías hacer el for normalmente y cuando llegás al onRelease, algo así:

Código:
this["nombre_mc_original"+i].onRollOver = function() {
		this.gotoAndPlay("emp");
}
La palabra "this" dentro de una función literal (o sea, las que no tienen nombre y se suelen usar al asignar acciones a eventos) "apunta" o se refiere al objeto al cual le asignás el evento.

Es decir:

Código:
algunMC_mc.onRelease = function () {
                 trace("This es="+this);
}
"this" va a ser una referencia a algunMC_mc (_level0.algunMC_mc, si está en el root).

Yo aprovecharía eso. Porque si asignás los eventos dentro de un for, cuando se ejecute el evento va a tomar el último valor de "i", no el valor que tenía en la vuelta correspondiente del loop. (Entender esto me costó varios dolores de cabeza: hacé la prueba, dentro de cada evento simplemente hacé un trace de "i" y vas a ver que si el loop va de i=0 a i<9,, te va a dar 9).

Suerte
Califa
  #7 (permalink)  
Antiguo 11/02/2006, 16:04
Avatar de m_sassa  
Fecha de Ingreso: noviembre-2002
Ubicación: Rio Cuarto - Córdoba - Argentina
Mensajes: 299
Antigüedad: 22 años
Puntos: 0
si, ya me ha costado a mi tambien dolores de cabezas eso de la i, te comento que eso lo solucione creando otra variable, perteneciente al objeto creado, y luego llamando a esa variable.

por otro lado, no sabia que se le podia asignar un .onRelease o un .onPress a un MC cualquiera. Muchas GRacias. Me has solucionado muchos problemas.

GRACIAS
__________________
"El paisano es la persona que lleva el paisaje en el alma"
Atahualpa Yupanqui
  #8 (permalink)  
Antiguo 11/02/2006, 17:06
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 10 meses
Puntos: 5
Excelente .

Me alegro de que lo hayas solucionado. Entre paréntesis, de lo de los eventos de botón aplicados a un mc me enteré hace un par de meses, nomás, pero ahora ya casi no uso botones (salvo para algo rápido y/o muy simple). Usar mc's lleva en la mayoría de los casos el mismo trabajo y te da muchísima más versatilidad.

Suerte
Califa
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 23:40.