Cristalab

                 ¿Quieres registrarte?

Obtener parámetros en eventos de Actionscript 3

Por: Zguillez
18 de Noviembre del 2008
6418 de clabLevel
Otros artículos de Zguillez
2,105 visitas

Cuando lanzamos un evento en Actionscript 3, por ejemplo de la clase MouseEvent, ponemos recuperar una serie de parámetros lanzados con ese evento.

Por ejemplo, en este código:

Código :

boton.addEventListener(MouseEvent.MOUSE_DOWN, onBotonEvent);

function onBotonEvent(e:MouseEvent):void
{
   trace(e);
}


El trace() nos mostraría el evento que ha lanzado la función mostrando también todos los parámetros. En este caso serían estos:

Código :

MouseEvent type="mouseDown" bubbles=true cancelable=false eventPhase=2 localX=43 localY=30 stageX=170.55 stageY=106 relatedObject=null ctrlKey=false altKey=false shiftKey=false delta=0


Recuperar estos parámetros y saber con detalle el evento que ha lanzado la función nos puede resultar muy útil en muchos casos.

por ejemplo, su quisiésemos ejecutar una acción u otra al clicar sobre el botón dependiendo si estamos pulsando la tecla <ctrl> podríamos recuperar ese parámetro del evento:

Código :

boton.addEventListener(MouseEvent.MOUSE_DOWN, onBotonEvent);
function onBotonEvent(e:MouseEvent):void
{
   e.ctrlKey == true ? accion1() : accion2();
}


Aquí, si clicamos al botón sin tener pulsada la tecla <ctrl> ejecutaremos la función accion2, mientras que con el mismo clic con la tecla pulsada ejecutaríamos la función accion1.

También podemos utilizar este recurso para asignar la misma función a varios eventos y poder asignar diferentes parámetros a la función dependiendo del tipo de evento:

Código :

import fl.motion.Color;
boton.addEventListener(MouseEvent.ROLL_OVER, onBotonEvent);
boton.addEventListener(MouseEvent.ROLL_OUT, onBotonEvent);
boton.addEventListener(MouseEvent.MOUSE_DOWN, onBotonEvent);
boton.addEventListener(MouseEvent.MOUSE_UP, onBotonEvent);

function onBotonEvent(e:MouseEvent):void
{   
   var code:uint;   
   e.type == "rollOver" ? code = 0xCCCCCC : null;
   e.type == "rollOut" ? code = 0x999999 : null;
   e.type == "mouseDown" ? code = 0x666666 : null;
   e.type == "mouseUp" ? code = 0xCCCCCC : null;
   
   var color:Color = new Color();
   color.setTint(code, 1);
   e.target.transform.colorTransform = color;
}


En este ejemplo, todos los eventos del botón ejecutan la misma función pero dependiendo de cada uno se coloreará el clip de un color u otro.


Artículos Relacionados


Etiquetas actionscript_3

Comentarios | Enviar un comentario
ud. es el maestro :alabado:
Por: penHolder
Muy bueno ;)

49 tips, vayan marchando las birras ... brindaremos por los 50

Jorge
Por: solisarg
Noooooooooooo Zguillez te adelantaste yo pensaba hacer un tuto del MouseEvent pero ya me restate material, de todas formas esta muy bueno felicitaciones.
Por: jegm88
Muy útil, felicidades.
Por: dashpaul

jegm88-blog :

Noooooooooooo Zguillez te adelantaste yo pensaba hacer un tuto del MouseEvent pero ya me restate material

Wellcome to the jungle
Por: Zguillez
Genial, como siempre, Z. Gracias por el tip!
Por: The Fricky!
sip tendré que acostumbrarme.
Por: jegm88
buen tip maestro u.u
Por: eldervaz
Muy bueno Z, gracias.
Por: Carloz.Yanez
Breve "tirón de orejas", el operador condicional se debería usar sólo para asignar valores a variables

Código :


code=(e.type == "rollOver") ?  0xCCCCCC  :

    ((e.type=="rollOut") ? 0x999999 :

    ((e.type=="mouseDown") ? 0x666666  : 

    0xCCCCCC))



Por todo lo demás claro como el agua
Por: Eliseo-blog
Simple, claro, sencillo y útil. Muchas Gracias.
Por: Noja33
Muy buen tip, me sera de mucha utilidad. Gracias (y)
Por: fredybg
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.