如果按下D键则运行事件

时间:2018-04-01 12:50:57

标签: javascript

我正在制作动画/游戏。

它已经有ifkeypressed,您甚至可以输入密钥。

但是当我播放动画时,无论按哪个键,我都会按下它。

我想知道在按下 D 键时是否有办法运行某些东西。在此示例中,它将运行play();

我还需要w,a和s。

我的代码:

function keyReleased(key) {
    event
}

P.S。 我确定并且我经历了w /我的原始代码,即使我将按键设置为“d”,即使我按下(例如,当我通过按下空格时)一个按键仍然可以运行它。

2 个答案:

答案 0 :(得分:0)

您需要添加事件侦听器来跟踪键事件。在下面的示例中,我使用了keyup,因为一旦密钥被释放,它就会运行。

在事件监听器的回调函数中,您将获得一个event对象,您可以通过此对象检查名为keyCode(或旧浏览器which)的内容。键盘上的每个键都有一个映射号码,因此您可以追溯到是否传递了DWAS并调用了不同的键基于此的方法。

我在下面编写了一些通用的面向对象代码,以展示如何实现这一目标。了解事件如何从addEventListener回调传递到keyPressed,如果代码与keyPressed匹配,则moveRight会运行68的逻辑。

function GameName() {
  // ... constructor stuff ...

  // add keypressed method on keyup
  document.addEventListener('keyup', function(event) {
     this.keyPressed(event);  
  }.bind(this));
}

GameName.prototype.keyPressed = function(event) {
  // browser compatibility check for event and event code
  var e = event || window.event,
      code = e.which || e.keyCode;

  // If user pressed 'D' key (google for javascript key codes)
  if (code === 68) {
    this.moveRight();
  }
}

GameName.prototype.moveRight = function(event) {
   // user moves right
}

答案 1 :(得分:0)

您可以通过以下几种方式为特定键指定功能:

function play() {
  alert("I'm playing!");
}

document.addEventListener("keydown", checkKeyPressed, false);

function checkKeyPressed(e) {
  if (e.keyCode == 68) {
    play();
  }
}

function play() {
  alert("I'm playing!");
}

document.onkeydown = function(e){
  e = e || window.event;
  var key = e.which || e.keyCode;
  if(key == 68){
    play();
  }
}

或使用JQuery

function play() {
  alert("I'm playing!");
}

$(document).keydown(function(e) {
  if (e.keyCode == 68) {
    play();
  }
});

" w"," a"和" s"的关键代码分别是87,65和83。以下是所有代码的列表: https://stackoverflow.com/a/45534377/3080392