【问题标题】:detecting two keyboard buttons in javascript在javascript中检测两个键盘按钮
【发布时间】:2015-02-28 11:22:19
【问题描述】:

我正在编写一个简单的画布游戏,并且希望能够在屏幕上沿对角线移动我的角色。如何检测按下的两个键说向上和正确? 到目前为止,这是我的代码-

function keyHit(evt){
switch (evt.keyCode) {
case 38:  /* Up arrow was pressed */
if (player2y >= 1){
player2y -= 4;
 } else {player2y = 0;}
break;
case 40:  /* Down arrow was pressed */
if (player2y <= 364){
player2y += 4;
} else { player2y = 365;}
break;
case 37:  /* Left arrow was pressed */
if (player2x >= 1){
player2x -= 4;
} else {player2x = 0;}
break;
case 39:  /* Right arrow was pressed */
if (player2x <= 665){
player2x += 4;
} else {player2x = 666;}
break;
}
}

【问题讨论】:

  • 阅读我的答案here - 不同的语言,但相同的想法。

标签: javascript


【解决方案1】:

捕获“keydown”和“keyup”事件并维护当前按下的键列表。示例:

pressed = {}


window.onkeydown = function(e) {
  pressed[e.keyCode] = 1
  handler(Object.keys(pressed).sort())
}

window.onkeyup = function(e) {
  delete pressed[e.keyCode];
  handler(Object.keys(pressed).sort())
}

function handler(pressed) {
  document.getElementById("log").value = pressed
  if(pressed == "38,39")
    alert("Up+Right pressed!")
}  
&lt;textarea id="log"&gt;&lt;/textarea&gt;&lt;br&gt;click here first, then press some keys

【讨论】:

猜你喜欢
  • 2015-02-01
  • 2019-05-21
  • 2021-12-12
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
  • 2018-10-24
  • 2022-01-15
相关资源
最近更新 更多