Время записи ключа удерживается в обработке
Я искал на многих форумах, в том числе и на этом, и не вижу ответа на этот вопрос. Многие из предоставленных мне решений выглядели так:
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;
}
}