ActionScript 2 - Eventos de Teclado - addListener


Para dar mayor interactividad a nuestras películas flash, el ActionScript 2 posee varias herramientas, por ejemplo, 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);

No hay comentarios: