Cristalab

                 ¿Quieres registrarte?

Eventos de teclado en Actionscript 3

Por: Zguillez
3 de Noviembre del 2006
6416 de clabLevel
Otros artículos de Zguillez
15,704 visitas

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


Artículos Relacionados


Etiquetas actionscript_3

Comentarios | Enviar un comentario
buen tutorial zguillez, andaba rompiendome la cabeza con esto

ya sabia yo que no iba a ser tan facil con as3
Por: oscart_blog
Buen tip, cada vez nos acercamos mas a migrar todo lo que haciamos en AS2 a AS3 y claro; el monton de ventajas nuevas U_U
Por: Wanaya
Sin quejas. Un buen tip, justo al punto. Quizas no tan extensible desde el punto de vista de OOP :P pero es un tuto, así que está perfecto.
Por: Freddie
bueno, bonito y claro. Ojala todos sean asi porque con el anterior me lie bastante, cosas de la torpeza jeje

buen tutorial
Por: noctam_blog
que bien.. pero una cosa quisiera que sea : con netbeans que se puede crear carpetas para las clases a la hora de crear un nuevo documento, pero antes de eso creo que sería mejor un nuevo proyecto donde se vea todo los archivos..
creo que en eso mejorará..
Por: Rolly_blog
A que teclas del teclado se le puede dar acciones?? Esque se me ocurrió una posible manera de hacer una galería de fotos en la cual sea mas dificil copiarla (me lo pidió un cliente), dando una acción que diga que cuando la tecla de PrintScreen sea pulsada para capturar pantalla, que el clip de pelicula que contiene la foto, vaya al fotograma 2, estando éste vacío. Siempre se podrá seguir copiando de otras maneras, pero al menos asi se evitaria ese modo mas comun.
Se podria hacer algo asi o solo se le puede dar acciones a teclas muy concretas?

Enhorabuena por esta web!!! saludos desde Zamora
Por: pepe_blog
quiero mi tarea de computacion
Por: juan_blog
que codigo debo ponerle a un boton en action script
que al darle click capture la pantalla y la envie a un correo??
Por: jose en problemas_blog
quiero urgentemente crear un teclado me pueden ayudar
Por: cafam_blog

cafam_blog :

quiero urgentemente crear un teclado me pueden ayudar

Yo compraría cuadraditos de plástico, les pintaría con marcador indeleble unas letras y las ubicaría según corresponde por usos y costumbres. La parte difícil es grabar los circuitos, pero con un poco de creatividad se puede hacer.

PD: no te olvides de los 3 LEDs arriba a la derecha y del USB.
Por: Duque de Rivas (logout)
JAJAJAJ... ¿ Facíl ? de eso nada...
No se si es por mi INGNORANCIA en cuanto Java, ¿ Pero desde cuando una clase se declara con paréntesis como si fuese un constructor ? me peta. CONCLUSIÓN DEBE HABER UNA FORMA MAS SENCILLA Y REUTILIZABLE DE IMPLENTAR EL TECLADO... Y PARA COLMO EN LA VERSION BETA DEL MANUAL DEL FABRICANTE FALTA TODO EL CONTENIDO DE OPP Y YA SE QUE ESTÁ EN LIVEDOCS... no ayuda en nada !!!!
Por: AGCañibano_blog
ok...asi quedamos

att:Seed
Por: Victor_blog
q aburrido
Por: yo-blog
...y no es más fácil así?:

function teclas(event:KeyboardEvent)
{
txtTexto.text="oprimiste la tecla número " + event.charCode + " del charCode";
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, teclas);
Por: Kottore-blog
Muchas gracias!!!!
Por: matias-blog
hola, estaba viendo tu codigo y lo que no comprendo es donde queda el constructor de tu clase por que estoy leyendo tu codigo pero me marca error en la cuestion de la clase teclado():void y pues no se si algo lo estoy entiendo mal...
Por: Mike Morales-blog
GRACIAAAS!!.. no quepo de la emoción. Llevo toda la tarde peleando con mi programa porque no lograba encontrar porque no me funcionaba lo de stage.addEventListener... y por fin en esta página lo encuentro. Estoy super agradecida. MIL GRACIAS!!! =D
Por: Veronica-blog
esta mal, donde esta el constructor
Por: martin-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.