记录密钥在 Processing 中的保存时间

Record time a key is held in Processing

我在包括这个论坛在内的许多论坛上进行了搜索,但我找不到任何答案。给我的许多解决方案如下所示:

void keyPressed(){
  if (key == 'e'){
    t = millis();
  }
}

void keyReleased(){
   if (key == 'e'){
    t = millis()-t;
    println(t);
   }  
}

这是不正确的,因为当我按住一个键时,keyPressed 函数会不断调用 millis()。所以当释放键时,记录的时间打印出一个接近于零的数字!

如何让 keyPressed 只调用 millis() 一次?

您可以只使用 boolean 来跟踪您是否已经设置了值。像这样:

boolean recorded = false;

void keyPressed(){
  if (key == 'e' && !recorded){
    t = millis();
    recorded = true;
  }
}