viernes, 6 de febrero de 2015

El Teclado y los Marcianos(?)


Existen varias formas de interceptar cuando el usuario presiona una tecla, la más simple en mi opinión es a través de una librería que Openfl dispone específicamente para este objetivo.
Trabaja de forma similar a lo visto en el ejemplo anterior (mouse). Al mismo tiempo, veremos otras formas de crear sprites.





Vamos a tratar de recrear en esta ocasión un shooter muy clásico: el Space Invaders.
Para ello, vamos a hacer uso del teclado cuando debamos mover nuestra nave, con las flechas y la barra de espacio nos servirá para disparar.

Comenzamos un nuevo proyecto en openfl y en primer lugar importamos la librería de eventos, más específicamente la del teclado:

import openfl.events.Event;
import openfl.events.KeyboardEvent;

Ello nos permitirá interceptar cuando el usuario presione o suelte una tecla mediante dos eventos específicos, pero antes de ello creamos una matriz o arreglo que va a alojar el código de la tecla presionada:

private var Tecla_usada:Array<Bool>;
Tecla_usada = new Array<Bool>();

Lo que hacemos aquí es guardar en primer lugar y como índice del array el código de la tecla presionada y al mismo tiempo su estado (verdadero o falso)

Puede verse una lista de los códigos aquí:

Con estos datos, es muy simple de escribir el código de control para cada una de las acciones que debe tomar el programa según la tecla presionada.

Primero agregamos los eventos:

stage.addEventListener(KeyboardEvent.KEY_DOWN, Tecla_Presionada);
stage.addEventListener(KeyboardEvent.KEY_UP, Tecla_Soltada);

Luego las dos rutinas:


Y por último, qué hacer con ellas:




Hasta aquí hemos visto cómo manejar la interceptación de teclas, en la próxima agregamos los objetos a nuestro ejemplo.

Enlace al código en Git