p5js中的keyIsDown()问题

时间:2019-02-21 08:14:21

标签: javascript p5.js

我正在尝试使用p5js和p5.play制作基本的2D游戏。每次尝试执行任何操作时似乎都会引起问题的问题是keyIsDown函数。有没有一种方法可以在按下某个键之前确定它是否已按下?如果我使用

upKey = keyIsDown(UP_ARROW);

upKey将显示为未定义,直到我按向上箭头。在按下它们之前,是否有任何方法可以将相应的布尔值分配给这些类型的事物? 到目前为止,直到我一次按下每个已插入的键,我的游戏才能正常工作。

1 个答案:

答案 0 :(得分:0)

  

keyIsDown() 功能检查当前是否按下了按键,即是否已按下。如果您有一个可移动的对象,并且希望多个键能够同时影响其行为,例如对角线移动精灵,则可以使用它。

请注意,箭头键也将导致页面滚动,因此您可能想在游戏中使用其他键。.但是,如果要使用箭头键,则这是参考页上的代码段

let x = 100;
let y = 100;
function setup() {
  createCanvas(512, 512);
}

function draw() {

  if (keyIsDown(LEFT_ARROW)) {
    x -= 5;
  }

  if (keyIsDown(RIGHT_ARROW)) {
    x += 5;
  }

  if (keyIsDown(UP_ARROW)) {
    y -= 5;
  }

  if (keyIsDown(DOWN_ARROW)) {
    y += 5;
  }

  clear();
  fill(255, 0, 0);
  ellipse(x, y, 50, 50);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>

要在不使用箭头键的情况下实现类似的逻辑,则需要确定要使用的键的键代码。

这是一个使用awsd键并注销当前按下键的键代码的示例。

let x = 50;
let y = 50;
function setup() {
  createCanvas(512, 512);
}
function keyPressed(){
console.log(keyCode);
}

function draw() {
  if (keyIsDown(65)) {
    x -= 5;
    if (x < 0) x = 0;
  }

  if (keyIsDown(68)) {
    x += 5;
    if (x > width) x = width;
  }

  if (keyIsDown(87)) {
    y -= 5;
    if (y < 0) y = 0;
  }

  if (keyIsDown(83)) {
    y += 5;
    if ( y > height) y = height;
  }

  clear();
  fill(255, 0, 0);
  ellipse(x, y, 50, 50);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>