P5.js: 如何知道一个键是否不再被按下?

P5.js: How to know if a key is no longer pressed?

如何知道密钥是否已释放?这个问题已经为 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;
        }
    }
}

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

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

注意keyPressedkeyReleased不会在按住某个键时连续调用:

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 键,这个简单的例子会改变 canvas 的颜色(当然焦点必须在 canvas 上):

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>

您可以使用以下代码:

$(document).keyup(function(){
console.log('key up');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
记得加jquery!