Comunidad de diseño web y desarrollo en internet online

llamar funciones desde array

Citar            
MensajeEscrito el 04 Oct 2009 03:37 pm
hola, presento el siguiente problema en flash, vengo trabajando desde hace poco con as3 y quisiera saber si es posible guardar nombre de funciones en un array para logra este codigo donde varios botones me hacen la misma fucion, les advierto no se puede hacer con paquetes debe ser de esta forma con el for y el array en paquetes no

Código ActionScript :

var i:int;
var botones : Array= new Array ( boton1, boton2, boton3, boton4, boton5, boton6);//estos son las instancias de los botones
var animarcion : Array = new Array (anima1, anima2, anima3, anima4, anima5, anima6);//se supone estas son el nombre de las funciones
for (i = 0 ; i <5 ;i++) {
     botones [i].addEventListener (MouseEvent.ROLL_OVER, animacion [i]);
}
function animacion [i] (e:Event) {//y la funcion que quiero que se ejecute
 //los que aga el code
}


le agradesco a los que me quieran colaborar y a los que no pues tambien por mirar mi primer post en este foro gracias a todos espero que se peuda hacer lo necesito de urgencia gracias
:)

Por tuxianof

48 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Oct 2009 05:45 pm
Satakia, no hay problema que tu array sea un array de funciones. Lo que ocurre es que debes declarar primero las funciones

Código ActionScript :

var i:int;
var botones : Array= new Array ( boton1, boton2);
//declaramos aquí las funciones
function anima1(e:Event){
  trace("anima1: " +e.target)
}
function anima2(e:Event){
  trace("anima2: "+e.target)
}
//y aquí el array
var animacion : Array = new Array (anima1, anima2);
for (i = 0 ; i <2 ;i++) {
   botones [i].addEventListener (MouseEvent.ROLL_OVER, animacion[i]); 
}

en cualquier caso, lo que se suele hacer es usar una única función y "saber a qúién le ha ocurrido". Eso se hace mediante la propiedad "target" del evento. Podemos usar esa propiedad para saber qué botón se ha pulsado

Código ActionScript :

var botones : Array= new Array ( boton1, boton2);
for (i = 0 ; i <2 ;i++) {
   botones [i].addEventListener (MouseEvent.ROLL_OVER, botonOnClick); 
}
//una única función controla todos los botones
function botonOnClick(e:Event){
   trace (e.target.name)
}

Si tus botones los has llamado "boton0","boton1","boton2", es fácil saber el número del botón, con sólo escribir

Código ActionScript :

var index:int=int(e.target.name.substr(5) )

Eso hará que puedas relacionar los arrays.

Por Eliseo2

710 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Oct 2009 06:20 pm
que teso eres , muchas gracias

Por tuxianof

48 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Nov 2009 11:22 pm
Hola,

Y qué pasa cuando los botones han sido creados dinámicamente. Cómo se puede obtener el nombre o nombre de instancia de cada uno y crear una funcion que haga que cada llame a una escena o html diferente???

Saludos,

Por armanda

1 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 04 Nov 2009 11:49 pm
Si se crean dinamicamente tu puedes ponerles nombre

Código ActionScript :

//Creo 10 Botones y los almaceno

var botones:Array = new Array();
for(var i:int=0;i<10;i++){
botones.push(new SimpleButton());
//al boton que cambio de agregar le cambio el nombre
botones[botones.length-1].name="btn_"+i;
}



Con eso tendran diferentes nombres ;)

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Nov 2009 12:14 am
Muchas gracias por la rápida respuesta.

Pues suena lógico lo que dices. Con mi incipiente conocimiento, trataré de colocarlo dentro del código que tengo y si no lo logro volveré por ayuda, aunque no sé si colocarlo en este post o crear otro. Perdonen la impertinencia.
En realidad, ya cree un post al respecto donde explico el problema con un código para un menú elástico que encontré http://foros.cristalab.com/crear-enlaces-en-el-codigo-de-un-menu-elastico-t80749/ sólo que no he recibido respuesta. Igual gracias.

Por armanda

1 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 05 Nov 2009 12:45 am
Lo mejor es crearte otro post con los nuevos problemas :)

Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox

 

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