Функция println()
общеизвестно плоха во времени, поэтому я бы не стал доверять ей в таких микропроцессорах.
Кроме того, переменная key
содержит последнюю нажатую клавишу, которая может быть клавишей, которую вы отпустили вместо клавиши, которую вы нажали. Например, подумайте об этой последовательности событий:
- Я нажимаю клавишу
a
. Переменная key
становится a
.
- Я нажимаю клавишу
s
. переменная key
становится s
.
- Теперь я отпускаю клавишу
a
. переменная key
переключается обратно на a
.
- Я все еще держу клавишу
s
, поэтому через секунду моя клавиатура вызывает другое событие клавиши s
, переключая переменную key
на s
.
Если вы хотите более детального управления событиями клавиатуры, я предлагаю использовать такие функции, как keyPressed()
и keyReleased()
. Возможно, вы хотите отслеживать, какие клавиши были нажаты, используя набор переменных, которые вы установили в функциях событий. Вот пример:
boolean aPressed = false;
boolean sPressed = false;
void draw(){
if(aPressed){
// a is pressed
}
if(sPressed){
// s is pressed
}
}
void keyPressed(){
if(key == 'a'){
aPressed = true;
}
else if(key == 's'){
sPressed = true;
}
}
void keyReleased(){
if(key == 'a'){
aPressed = false;
}
else if(key == 's'){
sPressed = false;
}
}
Бесстыдная самореклама: здесь - учебник по обработке входных событий. См. обработку нескольких нажатий клавиш , чтобы узнать больше об этом подходе.