Clase para el Manejo de Eventos de Teclado en ActionScript 3 | Phoxer.com
Clase para el Manejo de Eventos de Teclado en ActionScript 3
12/11/2010

Muchas veces (y mas para juegos) nesesitamos capturar cuando un usuario presiona una tecla, para eso he desarrollado una clase que me permite agrupar eventos del teclado de una manera mucho mas practica y facil.

veamos como funciona mi clase KeyManager:

/**
By .:[Phoxer]:.
http://www.phoxer.com
v 1.2;
*/
package phoxer.Events{	
	import flash.display.DisplayObject;
	import flash.events.KeyboardEvent;
 
	public class KeyManager{
		private var functions:Array;
		private var send:Boolean=false;
		private var keys:Array;
		public function KeyManager(stg:DisplayObject){
			functions = new Array();
			keys = new Array();
			stg.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown,false,0,true);
			stg.addEventListener(KeyboardEvent.KEY_UP,KeyUp,false,0,true);
		}
 
		public function addKeyBack(bk:Function):void{
			functions.push(bk);
		}
		public function removeKeyBack(bk:Function):void{
			for(var i:int=0;i<functions.length;i++){
				if(bk===functions[i]){
					functions.splice(i,1);
					break;
				}
			}
		}
 
		private function KeyDown(e:KeyboardEvent):void{
			var code:int=e.keyCode;
			if(!checkCode(code)){
				keys.push(code);
				sendEvent(1,code);
			}
		}
		private function KeyUp(e:KeyboardEvent):void{
			var code:int=e.keyCode;
			sendEvent(0,code);
			delKey(code);
		}
 
		private function checkCode(code:int):Boolean{
			for(var i:int=0;i<keys.length;i++){
				if(keys[i]==code){
					return true;
					break;
				}
			}
			return false;
		}
		private function delKey(code:int):void{
			for(var i:int=0;i<keys.length;i++){
				if(keys[i]==code){
					keys.splice(i,1);
					break;
				}
			}
		}
 
		private function sendEvent(sw:int,code:int):void{
			for(var i:int=0;i<functions.length;i++){
				functions[i](sw,code);
			}
		}
 
	}
}


Lo bueno de esta clase es que me permite controlar cuando un usuario presiona o suelta una tecla y por supuesto tambien controlar las repeticiones del teclado

Es muy facil de implementar:

import phoxer.Events.KeyManager;
 
var keys:KeyManager = new KeyManager(stage);
keys.addKeyBack(onKeysDown);
 
function onKeysDown(tp:int,cd:int):void{
	//Aqui obtenemos los datos de codigos de las teclas.
}


Gracias a esta clase he desarrollado muchos de mis juegos facilitandome mucho la parte de los eventos del teclado.

Aquí hay un ejemplo de un juego que desarrollé con esta clase:


Aqui pueden ver mas juegos desarrollados por mi:
www.BeatsGames.com -Mi pagina de juegos
BeatsGames -Mis Juegos en Facebook