Время записи ключа удерживается в обработке

Я искал на многих форумах, в том числе и на этом, и не вижу ответа на этот вопрос. Многие из предоставленных мне решений выглядели так:

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

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

Это неверно, однако, потому что функция keyPressed постоянно вызывает millis(), когда я удерживаю клавишу. Поэтому, когда ключ отпущен, записанное время печатает число, близкое к нулю!

Как мне сделать keyPressed вызывать millis() только один раз?

1 ответ

Решение

Вы могли бы просто использовать boolean который отслеживает, установили ли вы уже значение. Что-то вроде этого:

boolean recorded = false;

void keyPressed(){
  if (key == 'e' && !recorded){
    t = millis();
    recorded = true;
  }
}
Другие вопросы по тегам