Este pequeño truco se me ocurrió por error mientras buscaba algo de información sobre la captura de eventos en live docs de Adobe. Consiste en crear una función única para varios listeners y poder así agregarle parámetros y acciones a cada uno de estos sin tener que crear varias funciones especificas para cada uno, ahorrándonos varias lineas de código.
Código :
stage.addEventListener(MouseEvent.MOUSE_DOWN, EventHandler);
//
function EventHandler(event:Event):void
{
Estado.text = "mouseDown";
}Código :
stage.addEventListener(MouseEvent.MOUSE_DOWN, EventHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, EventHandler);
//
function EventHandler(event:Event):void{ /* ACCIONES */ }Aquí habrá un pequeño problema, en caso de querer que hagan cosas diferentes MOUSE_UP y MOUSE_DOWN ¿como identificaremos y/o diferenciaremos una función de otra?, y ¿si fueran mas de dos eventos juntos? Es aquí donde actuara el pequeño truco, utilizando event.type.Código :
stage.addEventListener(MouseEvent.MOUSE_WHEEL, EventHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, EventHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, EventHandler);
//
function EventHandler(event:Event):void
{
// Diferenciamos todos los eventos que lleguen a la función
switch(event.type)
{
// En caso de que el evento sea "MOUSE_DOWN" asignamos sus funciones
case MouseEvent.MOUSE_DOWN:
Estado.htmlText = "Haz <b>pulsado</b> el mouse";
break; // Cerramos
// En caso de que el evento sea "MOUSE_UP" asignamos sus funciones
case MouseEvent.MOUSE_UP:
Estado.htmlText = " Haz <b>liberado</b> el mouse";
break; // Cerramos
// Cuando llegue otro evento que no sea "MOUSE_DOWN" ni "MOUSE_UP"
// Por ende, solo nos queda "MOUSE_WHEEL"
default:
Estado.htmlText = "Haz utilizado el <b>Scroller</b>";
break; // Cerramos
}
}Código :
case MouseEvent.MOUSE_DOWN:
// Checamos el objeto sobre el cual haya sido el click
switch(event.target.name)
{
// En caso de que sea en stage
case null:
Estado.htmlText = "Haz <b>pulsado</b> el mouse sobre <b>Stage</b>"
break;
// En caso de que sea en el logo de Cristalab
case "Cristalab":
Estado.htmlText = "Haz <b>pulsado</b> el mouse sobre <b>Cristalab</b>"
break;
// En caso de sea en cualquier otro objeto que no se haya declarado
// por ejemplo el campo de texto dinamico
default:
Estado.htmlText = "Haz <b>pulsado</b> el mouse sobre algun otro objeto"
break;
}
break; // CerramosCódigo :
var timer:Timer = new Timer(1000, 0); timer.addEventListener(TimerEvent.TIMER, EventHandler); timer.start(); // var timerCount:int = 0; // ... case TimerEvent.TIMER: timerCount++; Estado.htmlText = "Han transcurrido <b>" + timerCount + " segundos</b>"; break; ...Así mismo con CLEAR, UNLOAD, ENTER_FRAME, MOUSE_MOVE, etc.
Código :
var timer:Timer = new Timer(10000, 0);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, EventHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, EventHandler);
stage.addEventListener(MouseEvent.MOUSE_MOVE, EventHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, EventHandler);
timer.addEventListener(TimerEvent.TIMER, EventHandler);
timer.start();
//
var timerCount:int = 0;
//
function EventHandler(event:Event):void
{
switch(event.type)
{
case MouseEvent.MOUSE_MOVE:
switch(event.target.name)
{
// En caso de que sea en stage
case null:
Estado.htmlText = "Haz <b>deslizado</b> el mouse sobre <b>Stage</b>";
break;
// En caso de que sea en el logo de Cristalab
case "Cristalab":
Estado.htmlText = "Haz <b>deslizado</b> el mouse sobre <b>Cristalab</b>";
break;
// En caso de sea en cualquier otro objeto que no se haya declarado
// por ejemplo el campo de texto dinamico
default:
Estado.htmlText = "Haz <b>deslizado</b> el mouse sobre algun otro objeto";
break;
}
break; // Cerramos
case MouseEvent.MOUSE_DOWN:
// Checamos el objeto sobre el cual haya sido el click
switch(event.target.name)
{
// En caso de que sea en stage
case null:
Estado.htmlText = "Haz <b>pulsado</b> el mouse sobre <b>Stage</b>";
break;
// En caso de que sea en el logo de Cristalab
case "Cristalab":
Estado.htmlText = "Haz <b>pulsado</b> el mouse sobre <b>Cristalab</b>";
break;
// En caso de sea en cualquier otro objeto que no se haya declarado
// por ejemplo el campo de texto dinamico
default:
Estado.htmlText = "Haz <b>pulsado</b> el mouse sobre algun otro objeto";
break;
}
break; // Cerramos
case MouseEvent.MOUSE_UP:
Estado.htmlText = " Haz <b>liberado</b> el mouse";
break;
case TimerEvent.TIMER:
timerCount += 10;
Estado.htmlText = "Han transcurrido <b>" + timerCount + " segundos</b>";
break;
default:
Estado.htmlText = "Haz utilizado el <b>Scroller</b>";
break;
}
//
// Estado.appendText(event.type);
}
Bipe-blog :