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

Cómo pasar parámetros con OnPress??

Estas en el tema de Cómo pasar parámetros con OnPress?? en el foro de Flash y Actionscript en Foros del Web. Hola, tengo un problemón. Tengo una serie de objetos que he attacheado desde la biblioteca con attachMovie y les he ido dando como nombre folio1, ...
  #1 (permalink)  
Antiguo 30/09/2005, 03:21
 
Fecha de Ingreso: febrero-2003
Ubicación: Madrid
Mensajes: 44
Antigüedad: 21 años, 9 meses
Puntos: 0
Cómo pasar parámetros con OnPress??

Hola, tengo un problemón.

Tengo una serie de objetos que he attacheado desde la biblioteca con attachMovie y les he ido dando como nombre folio1, folio2, ...

Quiero que cuando se pulse sobre uno de esos objetos, dicho objeto aumente su tamaño. Para ello hago lo siguiente (este codigo está en un clip sobre el que he attacheado los objetos):

for (i=1; i<=total_folio; i++)
{
with(eval("folio.folio"+i))
{
onPress = function()
{
with(eval("this.folio.folio"+i))
_xscale = 150;
_xscale = 150;
}
}
}


Pero resulta que la variable "i" dentro de onPress ha perdido su valor, por lo tanto el with posterior no funciona, pues está pasando "this.folio.folioundefined". Pensé que si se pierde el varlor, quizá pudiera utilizar "_name" para saber el nombre del clip pulsado. Ya que onPress está dentro de with(eval("folio.folio"+i)) pensaba que el _name dentro tendría como valor "folio1" o "folio2" o el que tocara, pero no:


for (i=1; i<=total_folio; i++)
{
with(eval("folio.folio"+i))
{
onPress = function()
{

trace(this._name);
}
}
}


Para probarlo hice esto, y el trace me devuelve el nombre del clip donde albergo toda esta programación, en vez de "folio2" o cualquiera que sea el clip en el que hemos hecho click.

¿Cómo puedo hacer que las variables dentro del onPress sepan en cual de todos los "folio" he hecho click? No quiero meter la programación en cada uno de los ojbetos "folio" de la librería,quiero que al usar attachMovie los tenga ya en la película y asignarles este código...

¿ se puede? Gracias de antemano
  #2 (permalink)  
Antiguo 30/09/2005, 11:04
Avatar de julio archila  
Fecha de Ingreso: marzo-2005
Ubicación: Quetzaltenango, Guatemala
Mensajes: 272
Antigüedad: 19 años, 8 meses
Puntos: 0
intenta lo siguiente: si de botones se trata te recomiendo primero crees un array de botones

botones = new Array(bt_1, bt_2, bt_3, bt_4, bt_5);
for (i=0; i<=5; i++) {
botones[i]._x = 100
botones[i]._y = 100*i +10);
}
for (i=0; i<=5; i++) {
botones[i].onRollOver = function() {
this._xscale = 150;
this._yscale = 150;
}
}

claro suponiendo que son 5 botones, pero la idea es esta.

espero sea de ayuda

saludos
__________________
Julio Archila
  #3 (permalink)  
Antiguo 30/09/2005, 17:18
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 10 meses
Puntos: 193
tienes que incluir una variable de identificacion sobre el clip que atachas, ya que si usas la variable autoincremental siempre tendra su ultimo valor, no se si me explico.

usa algo asi:

Código:
var a:Number = 0;
while (a++<10) {
	var clip_mc:MovieClip = this.attachMovie("boton", "a"+a, a);
	clip_mc.id = a;
	clip_mc._y = a*20;
	clip_mc.onPress = function() {
		trace("el ID del Clip es "+this.id);
		trace("El Nombre del clip es "+this);
	};
}
Crea un Clip y ponle nombre de linkage "boton" y prueba
  #4 (permalink)  
Antiguo 30/09/2005, 17:20
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 10 meses
Puntos: 193
Cita:
Iniciado por julio archila
intenta lo siguiente: si de botones se trata te recomiendo primero crees un array de botones

botones = new Array(bt_1, bt_2, bt_3, bt_4, bt_5);
for (i=0; i<=5; i++) {
botones[i]._x = 100
botones[i]._y = 100*i +10);
}
for (i=0; i<=5; i++) {
botones[i].onRollOver = function() {
this._xscale = 150;
this._yscale = 150;
}
}

claro suponiendo que son 5 botones, pero la idea es esta.

espero sea de ayuda

saludos
Y si necesitas hacer una botonera de 100 Botones, creas el array con los 100 Nombres... es mejor hacer todo en un solo for o while y desde ahi crear las acciones..
  #5 (permalink)  
Antiguo 03/10/2005, 02:44
 
Fecha de Ingreso: febrero-2003
Ubicación: Madrid
Mensajes: 44
Antigüedad: 21 años, 9 meses
Puntos: 0
Muchas gracias!!!!!! Es lo que necesitaba.
Un saludazo!

Cita:
Iniciado por TMeister
tienes que incluir una variable de identificacion sobre el clip que atachas, ya que si usas la variable autoincremental siempre tendra su ultimo valor, no se si me explico.

usa algo asi:

Código:
var a:Number = 0;
while (a++<10) {
	var clip_mc:MovieClip = this.attachMovie("boton", "a"+a, a);
	clip_mc.id = a;
	clip_mc._y = a*20;
	clip_mc.onPress = function() {
		trace("el ID del Clip es "+this.id);
		trace("El Nombre del clip es "+this);
	};
}
Crea un Clip y ponle nombre de linkage "boton" y prueba
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 16:07.