Comunidad de diseño web y desarrollo en internet online

Nueva en funciones AS3

Citar            
MensajeEscrito el 03 Abr 2013 09:32 am
Hola soy nueva en flash cs6 con as3.

Estoy haciendo un flash muy sencillito. Tengo 4 diapositivas con varios botones en cada una, los cuales te mandan a fotogramas del 5 al 15. Lo he hecho poniendo en cada fotograma el siguiente código:

Para el botón llamado IndiceFactores, cuya instancia se llama igual

"IndiceFactores.addEventListener(MouseEvent.CLICK,factores);"

y luego haciendo la función

"function factores(e:MouseEvent):void{ gotoAndStop(5);}"

Con esto funciona bien pero al hacer todos los botones lo mismo creo que se repite mucho código simplemente para decirle que en vez del fotograma 5 vaya al 6. Para que en vez de ir al 5 vaya al 6 tengo que repetir lo mismo. ¿ se podría hacer una función a la que se le pasase el numero del fotograma al que deber ir al clickar en cada botón? No se si me explico... soy nueva. Mi idea es algo así:

IndiceFactores.addEventListener(MouseEvent.CLICK, goto(5)); //Aquí al clickar en el boton "indiceFactores" debería llamarse a la función goto y pasarle en parametro "a=5"

function goto (e:MouseEvent):void{ gotoAndStop(a );}// Aquí la función recibe el parámetro "a" y entonces va al fotograma "a" (en este caso el 5)

No se si me explico bien o soy un poco tonta :P
Gracias de antemano por la ayuda y besos!

Por Yemedan

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 03 Abr 2013 10:13 am
BuenAS:

Si tienes, por ejemplo, 5 botones llamados, "boton1", ... "boton5"

Código ActionScript :

boton1.name = "boton1";
boton2.name = "boton2";
boton3.name = "boton3";
boton4.name = "boton4";
boton5.name = "boton5";
boton1.addEventListener(MouseEvent.CLICK, onClick);
boton2.addEventListener(MouseEvent.CLICK, onClick);
boton3.addEventListener(MouseEvent.CLICK, onClick);
boton4.addEventListener(MouseEvent.CLICK, onClick);
boton5.addEventListener(MouseEvent.CLICK, onClick);
function onClick(event:MouseEvent):void
{
   switch (event.currentTarget.name) 
   {
      case "boton1":
         //código para el boton 1
      break;
      case "boton2":
         //código para el boton 2
      break;
      case "boton3":
         //código para el boton 3
      break;
      case "boton4":
         //código para el boton 4
      break;
      case "boton5":
         //código para el boton 5
      break;
   }
}


En cada 'case' coloca el código para cada botón. En la función controladora del evento CLICK puedes obtener el botón que se ha pulsado a través de :

event.currentTarget

Y si consultas su nombre:

event.currentTarget.name

puedes actuar en función de ese nombre y ejecutar un código u otro.

Asegurate de darle a cada botón el nombre que después utilizas en la sentencia switch / case. Si le das otros nombres, cambia la cadena que hay en cada case.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 03 Abr 2013 10:23 am
BuenAS:

Por otro lado, la gente que estaba acostumbrada a AS2 suele recurrir a los callbacks. Se haría algo así:

Código ActionScript :

//pasamos, por ejemplo, el nombre del botón y el fotograma.
boton1.addEventListener(MouseEvent.CLICK, callBack(onClick, "boton1", 1));
...
boton5.addEventListener(MouseEvent.CLICK, callBack(onClick, "boton5", 5));

function callBack(handler:Function, ...args):Function
{
   return function(...innerArgs):void
   {
      handler.apply(this, innerArgs.concat(args));
   };
}
function onClick(event:MouseEvent, nombre:String, fotograma:Number):void
{
   //en nombre tendrías el nombre del botón y en fotograma el número de fotograma.
}

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

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