首页 > 解决方案 > P5.js:如何知道某个键是否不再被按下?

问题描述

我如何知道密钥是否被释放?这个问题已经为 C# 编码人员回答了,但我不使用 C#。

function keyPressed() {
  if (keyIsDown(ENTER)){
      player.up();
  }
}

this.up = function() {
    if (this.y == 350){
        if (keyIsDown(ENTER)){
            this.velocity -= this.gravity*15;
        }
        else{
            this.velocity += this.gravity*20000;
        }
    }
}

此代码似乎不起作用。(不要介意我使用的整数。)

标签: javascriptprocessingp5.js

解决方案


当一个键被按下时,该keyPressed事件被调用一次。当一个键被释放时,该keyReleased事件被调用一次。该变量keyCode告诉您​​按下或释放哪个键。该keyIsDown功能可用于检查特定键当前是否按下,即按下。

请注意,keyPressed并且keyReleased在按住键时不会连续调用:

function draw() {}

function keyPressed(){
    if (keyCode === ENTER){
      console.log("Enter key pressed");
    }
    return false; // prevent any default behavior
}

function keyReleased(){
    if (keyCode === ENTER){
      console.log("Enter key released");
    }
    return false; // prevent any default behavior
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>

如果要连续检查和处理键的状态,则可以在draw函数中执行此操作,方法是检查keyIsDown

function draw() {

    .....

    if ( keyIsDown(ENTER) ) {
        this.velocity -= this.gravity*15;
    } else {
        this.velocity += this.gravity*20000;
    }

    .....

}

如果按住 ENTER 键,这个简单的例子会改变画布的颜色(当然焦点必须在画布上):

function draw() {
    if ( keyIsDown(ENTER) )
        background(255,0,0)
    else
        background(0,0,255)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>


推荐阅读