Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/07/2011, 07:37
Avatar de Escain
Escain
 
Fecha de Ingreso: enero-2007
Mensajes: 21
Antigüedad: 17 años, 7 meses
Puntos: 3
Respuesta: Problema con teclas

Las 2 preguntas son casi las mismas:

La línea:
Código:
keys[keyname]=(e.type == "keydown");
comprueba si e.type tiene como valor "keydown" (podría valer "keyup") y asigna el valor booleano correspondiente a keys[keyname]
Un código casi equivalente pero mas largo sería:
Código:
if( keyname=="w"){
	if( e.type=="keydown") keys["w"]=true;
	if( e.type=="keyup"  ) keys["w"]=false;
}else if( keyname== "i"){
	if( e.type=="keydown") keys["i"]=true;
	if( e.type=="keyup"  ) keys["i"]=false;
}
Es decir: keys guarda en cada momento si una tecla esta siendo pulsada. Cuando pulsas una tecla (evento keydown) asignas el valor correspondiente de keys a true, y cuando la sueltas (evento keyup) la asignas a false.
Esta es la razón por la que necesitas ambos eventos y no solo el de pulsar.

De esta forma, en la función actualizar que se ejecuta cada 40ms, puedes comprobar fácilmente si las teclas están siendo pulsadas o no y de esta forma mover o no los cursores de tu juego.

Espero haber aclarado las dudas ;)