boolean keyA=false;
boolean keyD=false;
// keys
@Override
public void keyPressed(KeyEvent e) {
int key= e.getKeyCode();
if(key==KeyEvent.VK_A){
keyA=true;
}
if(key==KeyEvent.VK_D){
keyD=true;
}
}
@Override
public void keyReleased(KeyEvent e) {
int key= e.getKeyCode();
if(key==KeyEvent.VK_A){
keyA=false;
}
if(key==KeyEvent.VK_D){
keyD=false;
}
//In constructor
new Thread(()->{
while(true){
try{Thread.sleep(10);}
catch (InterruptedException e){}
if(keyA)
player.moveLeft();
if(keyD)
player.moveRight();
}
}).start();
Обратите внимание на использование KeyEvent.VK_A
, делает жизнь намного проще.
Кроме того, убедитесь, что у вас есть sleep () в вашем потоке, потому что если это просто while (true), ничего в цикле не будет выполнено.