2015-05-06 85 views
1

我该如何让我的javascript函数等待用户按下键盘上的一个键来继续脚本?我正在使用提示让玩家在网格上移动,但我只想使用这些键。等待按键继续功能?

此代码不会等待用户按下某个键,而是直接进入提示。

this.onkeypress = function(evt) { 
    evt = evt || window.event; 
    var charCode = evt.keyCode || evt.which; 
    var option = String.fromCharCode(charCode); 
    alert(option); 
}; 
var option = prompt("You can move tiping: \na(left)\nd(right)\nw(up)\ns(down).", ""); 
hero_can_move = true; 
if(option=='w' || option =='a' || option=='d' || option=='s'){ 
    move(option); 
} 
+1

JavaScript中的IO是异步的 - 你不能让你的脚本等待它。您需要使用事件处理程序。 – joews

回答

0

我建议你用一个函数来绑定和事件按键

键码:

左箭头37

向上箭头38

右箭头39

down arrow 40

//how it would look in jquery 
    $(window).on("keypress", function(key) { 
     if(key == 37){ move("left");} 
     if(key == 38){move("up");} 
     if(key == 39){move("right");} 
     if(key == 40){move("down");} 
     }); 

绑定事件窗口,这样,当你点击一个按钮,窗口监听。除非符合if()条件的键被按下,否则什么都不会发生。 (注意,每按一次按键,窗口按键功能就会触发并测试所有包含的if。有些人会考虑这种不好的做法,但我真的不认为它在任何情况下的性能表现都不算太差现代计算机)