Eventos del teclado en AS2

ActionScript 2 tiene un completo set de herramientas que permiten detectar y responder a los eventos del teclado, esto para dar mayor interactividad a nuestras películas flash. Para manejar los eventos del teclado se tiene la clase Key que se puede utilizar para crear interfaces de usuario que controlen el teclado estándar.

Detectando el Teclado
Lo primero es detectar cuando se ha presionado alguna tecla, para ello existen dos eventos onKeyDown y onKeyUp, para detectar estos eventos es necesario agregar un listener de la siguiente forma:

  1. var listKey:Object = new Object();
  2. listKey.onKeyDown = function () {
  3.     // acción al presionar la tecla
  4. }
  5. listKey.onKeyUp = function () {
  6.     // acción al soltar la tecla
  7. }
  8. Key.addListener(listKey);

Códigos del Teclado
Cada tecla tiene asociado un código que nos servirá para poder compararlo y verificar la tecla que se ha presionado, para ello se tienen los siguiente códigos:

  • BACKSPACE: código de la tecla de Retroceso
  • CAPSLOCK: código de la tecla Bloq Mayús
  • CONTROL: código de la tecla Control
  • DELETEKEY: código de la tecla Suprimir
  • DOWN: código de la tecla de flecha abajo
  • END: código de la tecla Fin
  • ENTER: código de la tecla Intro
  • ESCAPE: código de la tecla Escape
  • HOME: código de la tecla Inicio
  • INSERT: código de la tecla Insert
  • LEFT: código de la tecla de flecha izquierda
  • PGDN: código de la tecla AvPág
  • PGUP: código de la tecla RePág
  • RIGHT: código de la tecla de flecha derecha
  • SHIFT: código de la tecla Mayús
  • SPACE: código de la tecla Barra espaciadora
  • TAB: código de la tecla Tabulador
  • UP: código de la tecla de flecha arriba

Luego podemos utilizar el método getCode() que devuelve la tecla que se ha presionado y la podemos comparar con los códigos listados anteriormente. Por ejemplo si deseamos ejecutar una función cuando se presiona la tecla ENTER (por ejemplo enviar un formulario) tendríamos el siguiente código.

  1. var listKey:Object = new Object();
  2. listKey.onKeyDown = function () {
  3.     if (Key.getCode() == Key.ENTER) {
  4.       sendForm();  
  5.     }
  6. }
  7. Key.addListener(listKey);

Nótese que sendForm es una función definida por el usuario, es decir que nosotros podemos definir y que contenga las acciones que deseamos realizar.

Luego si deseamos por ejemplo controlar la posición de un clip llamado esfera con el teclado podemos utilizar el siguiente código:

  1. var step:Number = 5;
  2. var listKey:Object = new Object();
  3. listKey.onKeyDown = function () {
  4.     switch (Key.getCode()) {
  5.         case Key.LEFT:
  6.             esfera._x += step;
  7.         break;
  8.         case Key.UP:
  9.             esfera._y -= step;
  10.         break;
  11.         case Key.RIGHT:
  12.             esfera._x += step;
  13.         break;
  14.         case Key.DOWN:
  15.             esfera._y += step;
  16.         break;
  17.     }
  18. }
  19. Key.addListener(listKey);

Como pueden ver utilizar los eventos del teclado es sencillo y con un poco de imaginación se pueden obtener resultados muy elaborados.

Comentarios Total 5 comentarios


ganCT
Publicado: 16/01/2008 4:04 am

Hola.

Una duda:
Y si queremos que al pulsar derecha y abajo al mismo tiempo se mueva en diagonal?

Gracias!!
Un saludo.

dick rowilson
Publicado: 04/11/2010 10:21 am

cordial saludo, me funciono perfecto, pero utilizo “Escape” en estado de full screen, de manera q solo funciona en para salir del full screen y las acciones (reacomodar un video clip a su tamaño original) no se ejecutan, si no hasta oprimir de nuevo. no se como resolverlo para q escuche y ejecute todo solo con oprimir una vez la tecla “esc”?. gracias

James
Publicado: 19/09/2011 8:06 pm

Mil Millones de gracias por este dato, fué muy útil, nuevamente, GRACIAS!

Sergio
Publicado: 14/11/2011 8:42 pm

Hola, quisiera consultarles si estos eventos del teclado son respetados todos en modo fullscreen debido a que en las pruebas que he realizado no me funcionan en modo fullscreen las teclas Enter, Backspace, letras.

esto es normal que asi sea?

quedo atento a alguna respuesta, gracias!

unijimpe
Publicado: 14/11/2011 8:57 pm

Lamentablemente el el modo fullscreen, los eventos del teclado asi como los campos de texto esta deshabilitados. Esto lo mencionan en: Exploring full-screen mode in Flash Player

Users cannot enter text in text input fields while in full-screen mode. All keyboard input and key-related ActionScript is disabled while in full-screen mode, with the exception of the keyboard shortcuts that take the viewer out of full-screen mode.

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)