Tutorial 9 - Creación de un juego (I)

Paso 9 de 26

Queremos que la nave gire y se desplace al pulsar las flechas del teclado, así que el primer paso será convertir la nave en un detector de eventos del teclado.

Programamos que cuando se detecte una pulsación de tecla, se ejecute una función a la que hemos llamado arrows. La forma de añadir un evento de teclado es similar a lo que hemos visto hasta ahora.

spacecraft_mc.addEventListener(KeyboardEvent.KEY_DOWN, arrows);

function arrows(e:KeyboardEvent):void
{
    trace("I pressed a key");
}

Con esta programación le estamos diciendo a la nave que, cuando detecte que se ha pulsado una tecla, ejecute una función que se llama arrows. Esta función, que recibe un evento de teclado, tiene a su vez la orden de escribir en el panel Salida la frase I pressed a key.

Sin embargo, si probamos la película y pulsamos las flechas del teclado no ocurrirá nada.

Esto se debe a que para que funcione un detector de eventos de teclado, el objeto encargado de detectarlo debe recibir el foco de la película, es decir, debe estar seleccionado. Para seleccionarlo añadimos al inicio de la programación el siguiente código:

stage.focus = spacecraft_mc;

Ahora que la nave tiene el foco, detectará las pulsaciones de nuestro teclado, escribiendo tras cada pulsación la frase que habíamos puesto en el trace. Cuando estamos en fase de pruebas, es posible que esta detección no funcione con las teclas que tengamos en Flash como métodos abreviados de teclado. Por ello en la fase de pruebas nos limitaremos también a las flechas del teclado.

Al tener ahora la nave el foco, podemos ver que aparece un rectángulo alrededor de la nave para indicar que tiene el foco. Para que no aparezca este rectángulo añadiremos, antes de dar el foco a la nave, una sentencia que especifique que, aunque nuestra nave tenga el foco, no muestre un rectángulo. Las dos primeras líneas de nuestra programación quedarán así:

spacecraft_mc.focusRect = false;
stage.focus = spacecraft_mc;