Comunidad de diseño web y desarrollo en internet

Eventos de teclado en Actionscript 3

Siguiendo los tips de Actionscript 3, aquí les dejo un sencillo ejemplo de como se detectan las pulsaciones de teclas en AS3. Recomiendo leer el tutorial de introducción a Actionscript 3 para algunos conceptos básicos.

La funcion isDown(), que usabamos en AS2, ha dejado de funcionar y ahora tendremos que utilizar la nueva clase flash.events.KeyboardEvent.

El primer paso será crearnos una clase que llamaremos "Teclado.as" y meterla dentro del package (carpeta) "clases"

Código :

package mx.clases
{
   
   public class Teclado()
   {

   }
   
}

Ahora importaremos las clases que vamos a necesitar: la clase KeyboardEvent y la clase Stage.

Código :

package mx.clases {   
   import flash.display.Stage;
   import flash.events.KeyboardEvent;
   //------------------------
   public class Teclado():void {

   }   
}

¿Por qué necesitaremos la clase Stage? Porque necesitaremos añadirle los detectores de eventos (listeners) a un objeto y en este caso se los añadiremos al Stage:

Código :

package mx.clases {   
   import flash.display.Stage;
   import flash.events.KeyboardEvent;
   //------------------------
   public class Teclado()
   {
      public function Teclado(stage:Stage)
      {
         stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
         stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
      }
   }   
}

Como podemos comprobar, hemos de pasarle una referencia del stage como parametro al constructor.

Ahora solo queda añadir las funciones a realizar:

Código :

package mx.clases {   
   import flash.display.Stage;
   import flash.events.KeyboardEvent;
   //------------------------
   public class Teclado()
   {
      public function Teclado(stage:Stage)
      {
         stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
         stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
      }
      //-------------------------------------------
      private function onKeyDown(tecla:KeyboardEvent):void {
         trace("pulsé la tecla: "+tecla.keyCode);         
      }
      private function onKeyUp(tecla:KeyboardEvent):void {
         trace("solté la tecla: "+tecla.keyCode);
      }
   }
}


Para utilizar esta clase en nuestro .FLA colocaremos:

Código :

import mx.clases.Teclado;
var teclado:Teclado = new Teclado(stage);

PD: Una característica curiosa de la clase KeyboardEvent es que nos permite detectar si estamos pulsando la tecla ctrl o la tecla shift a la hora de pulsar la tecla.

Código :

trace("¿Estoy pulsando la tecla ctrl? "+tecla.ctrlKey);   
//el resultado será true o false

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate