¿Qué es un listener en as3 y como configurarlo?
Saturday, 3. October 2009
ActionScript 3.0 nos permite controlar diversos eventos a través de los listeners. Son sentencias que escribimos directamente en el código y nos permiten saber cuándo ocurre un evento. En caso de que dicho evento ocurra, ejecuta una función que nosotros mismos debemos programar. Literalmente es un ‘escuchador’ que está pendiente todo el tiempo que nosotros queramos, de que se realice cierta acción.
¿Que es un evento?
Un evento es una acción cualquiera de las predefinidas por AS3 que nos permite añadir cierta interactividad a las animaciones, aplicaciones, juegos, webs, o lo que sea que desarrollemos. Por ejemplo: un evento es el clic del mouse, o la pulsación de una tecla, el paso de cierto tiempo, la entrada en escena de un nuevo fotograma, etc. Estas acciones nos permiten hacer que el código entienda cuando una acción de éstas se realiza, y por lo tanto, inicia la ejecución de una función. Para definir un listener que se oriente a un evento, utilizamos la siguiente sintaxis:
addEventListener(tipoDeEvento:evento,nombreDeLaFunción);
Vamos a definir los principales tipos de evento, así como los principales eventos en sí. Hay que especificar ambas cosas, tanto el tipo de evento, como el evento que queremos, separado por dos puntos (:).
Tipo de evento:
Existen distintos tipos de evento. Los más utilizados, normalmente son:
- MouseEvent
- KeyboardEvent
- Event
1. MouseEvent.
Controla los eventos relacionados con el mouse. Entre los eventos del tipo MouseEvent se pueden encontrar:
- CLICK …Sirve para ejecutar una función cuando se hace click sobre determinado objeto.
- MOUSE_DOWN …Sirve para ejecutar una función justo cuando se presiona el botón del mouse.
- MOUSE_UP …Sirve para ejecutar una función cuando se suelta el botón del mouse.
- MOUSE_MOVE …Se utiliza para ejecutar una función cuando el mouse se mueve.
- ROLL_OVER …Se utiliza para ejecutar una función cuando el mouse pasa por encima de algún objeto, sin necesidad de hacer clic sobre él.
- ROLL_OUT Sirve para ejecutar una función cuando el mouse que estaba sobre el, sale de su area activa.
Para crear un listener con este tipo de evento, podríamos escribir por ejemplo:
addEventListener(MouseEvent.CLICK, miFuncion);
Si queremos añadir este listener a un obeto específico, debemos aclararlo. Por ejemplo, si tenemos un objeto llamado ‘carro’, que está en el escenario o que va a estarlo, debemos escribir:
carro.addEventListener(MouseEvent.CLICK, miFuncion);
De esta forma la acción se ejecutará sólo cuando se haga click en el objeto mencionado. Por lo tanto, de aquí podemos concluir que se debe especificar la ruta de un objeto, separada por puntos, del objeto al que queremos asociar el listener.
2. KeyboardEvent
Controla los eventos relacionados con el teclado. Entre los eventos del tipo KeyboardEvent se pueden encontrar:
- KEY_DOWN …Sirve para ejecutar una función cuando se presiona o pulsa una tecla.
- KEY_UP …Sirve para ejecutar una función cuando la tecla es liberada.
- keyCode …Sirve para ejecutar una función cuando se presiona una tecla espécifica, identificada por un código. Por ejemplo, cuando usamos las flechas del teclado, usamos los códigos 37, 38, 39 y 40 para mover un objeto con el teclado.
- charCode …Se utiliza para ejecutar una función cuando se presiona una tecla específica, pero que permite diferenciar, por ejemplo, mayúsculas y minúsculas, o distintos elementos que pueden escribirse con una misma tecla.
Para crear un listener con este tipo de evento, podríamos escribir por ejemplo:
stage.addEventListener(KeyboardEvent.KEY_DOWN, miFuncion);
IMPORTANTE: Cuando usamos eventos del mouse tenemos un objeto predeterminado al que se asocian estas funciones en la pantalla: El puntero del mouse. Sin embargo para el teclado no hay tal cosa. Por lo tanto si creamos un evento y no ponemos el “stage” antes, no funcionará. Tenemos que asociarlo a algo, y por lo tanto, como predeterminado, lo asociaremos al escenario, que es justamente lo que significa el ’stage’ antes del listener.
3. Event.
En palabras sencillas, controla eventos como por ejemplo sucesos de la linea de tiempo, carga, scroll, select… Muy diversos eventos no tan específicos como los anteriores. entre los eventos de tipo Event, usualmente utilizamos:
- ENTER_FRAME …Es quizá el más importante porque nos permite realizar una función cada que entra un nuevo fotograma. Por lo tanto, muchas veces lo podemos utilizar para ejecutar funciones permanentemente. Supongamos que estamos en Flash, trabajando a 30 fps. Esto quiere decir que si asociamos un listener a un ENTER_FRAME, esta función se realizará 30 veces cada segundo. Igualmente podemos usarlo para acciones orientadas a fotogramas específicos utilizando currentFrame y currentLabel.
- COMPLETE …Realiza una función cuando la descarga de un objeto se ha completado.
- FULLSCREEN …Ejecuta una función cuando hay un evento de fullscreen o pantalla completa
Para crear un listener con este tipo de evento, podríamos escribir por ejemplo:
addEventListener(Event.ENTER_FRAME, miFuncion);
Funciones
No podemos crear un listener que realice una función sin definir la misma, porque nos daría como resultado un error. Debemos entonces definir la función, antes o después del listener, que queremos que se ejecute. Esto lo hacemos de la siguiente manera:
Si creamos un listener que va a ejecutar la función llamada ‘miFuncion’, podemos crearla así:
function miFuncion(){
//Contenido de la función
}
Lo que aparece después de las // son comentarios, y es allí donde debemos definir qué es lo que queremos que haga nuestra función. El listener le dirá cuando ejecutarse.
Espero que esta información sea de utilidad para muchos. Cualquier problema o inconsistencia, pueden añadir un comentario aquí mismo. Igualmente, si encuentras útil el artículo, deja un comentario. Un saludo.
Samuel Jiménez. EsK.






Anna Says:
Muchas gracias. la verdad me ayudaste mucho, ya sabia el uso del listener y los eventos pero me ayudaste a estar segura de la funcion que se realiza con cada uno.
eskombro Says:
Me alegra que te haya servido de ayuda el artículo. La idea es que sean útiles tanto para quien no maneja el código, como para quienes lo conocen pero quieren revisar un tema puntual. Un saludo.
Juan Says:
Gracias por aclarar un tema confuso para quienes empezamos en esto, por cierto de una forma cristalina , gracias de nuevo
drawde Says:
Hola en verdad muy clara la informacion espero sigas explicando lo demas jeeje se agradece en verdad me gustaria saber mas de action script 3, que bueno que enocntre este sitio…saludos
Andrea Says:
Excelentes tutoriales!!! Hace tiempo que buscaba una página como esta en español!!
wily Says:
excelente me ayudo muchisimo
Nito Says:
Estoy leyendo varios tutos y están muy bien explicados.
Gracias ^^
daniel Says:
hola soy nuevo en as3 y me encanto el tutoríal, esta bien explicado y es fácil de entender muy buena la web.
saludos y gracias por los tutoriales
MARCOS HUERTA HERNANDEZ Says:
no solo me resulto util me resulto de limpieza para comprender lo que el addEventListener() puede realizar gracias por el tema
fercho Says:
gracias buena forma de explicar solo quisiera una ayuda necesito que un movie clip salga en pantalla completa pero al hacer click con el raton gracias