私はkeyListenerを持っているので、ついにキーボード入力の遅延を克服しました。ユーザーが「上」矢印キーを押して「上」に移動すると、必要なだけ「上」に移動し、その後、ユーザーが「下」矢印キーを押すと、(「上」矢印キー)「下」に移動します。
「下」矢印キーを離した後、「上」キーを再度押さなくても「上」に移動できるようにするにはどうすればよいですか?
(注: プロセス全体で「UP」キーを押します。)
入力をリッスンするために現在使用しているコードは次のとおりです。
private void keyListeners(){
GlobalObjects.frame.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
//Up = 1
//Down = 2
//Left = 3
//Right = 4
if(e.getKeyCode() == 38){
System.out.println("UP KEY PRESSED");
player.setPlayerMovement(1);
}else if(e.getKeyCode() == 40){
System.out.println("DOWN KEY PRESSED");
player.setPlayerMovement(2);
}else if(e.getKeyCode() == 37){
player.setPlayerMovement(3);
}else if(e.getKeyCode() == 39){
player.setPlayerMovement(4);
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == 38){
if(player.getPlayerMovement() != 1){
System.out.println("UP KEY released, but some other arrow key changed the playermovement to a different number (do nothing)");
}else{
System.out.println("UP Key was a the last key pressed, therefore its safe to set player movement to "0" (not moving)");
player.setPlayerMovement(0);
}
}else if(e.getKeyCode() == 40){
if(player.getPlayerMovement() != 2){
}else{
player.setPlayerMovement(0);
}
}else if(e.getKeyCode() == 37){
if(player.getPlayerMovement() != 3){
}else{
player.setPlayerMovement(0);
}
}else if(e.getKeyCode() == 39){
if(player.getPlayerMovement() != 4){
}else{
player.setPlayerMovement(0);
}
}
}
@Override
public void keyTyped(KeyEvent e) {
}
});
}
わからない場合は、これは 2D RPG ベースのゲームです。(それがまったく役立つ場合は、質問に答えます)