私はJavaに比較的慣れていないので、矢印キーでオブジェクトを移動するゲームを作成しています(長押しすると速くなります)。
これらの動きのコードは次のとおりです (キーリスナーを使用しています)。
public void keyPressed(KeyEvent e) {
int c = e.getKeyCode();
if(c == KeyEvent.VK_A||c == KeyEvent.VK_LEFT){
PacMan.velX -= PacMan.speed;
PacMan.move = true;
//PacMan.velY = 0;
System.out.println("LEFT");
}
if(c == KeyEvent.VK_D||c == KeyEvent.VK_RIGHT){
PacMan.velX += PacMan.speed;
PacMan.move = true;
//PacMan.velY = 0;
System.out.println("RIGHT");
}
if(c == KeyEvent.VK_W||c == KeyEvent.VK_UP){
PacMan.velY -= PacMan.speed;
PacMan.move = true;
//PacMan.velX = 0;
System.out.println("UP");
}
if(c == KeyEvent.VK_S||c == KeyEvent.VK_DOWN){
PacMan.velY += PacMan.speed;
PacMan.move = true;
//PacMan.velX = 0;
System.out.println("DOWN");
}
if(c == KeyEvent.VK_ESCAPE){
if(Main.pause == false){Main.pause = true;Main.move = true;}
else if (Main.pause == true){Main.pause = false;Main.move = false;}
System.out.println("Pause");
}
if(c == KeyEvent.VK_R){
Levels.setLevel();
}
if(c == KeyEvent.VK_E){
if(nextLevel){nextLevel = false;
Levels.setLevel();}
}
Main.start = true;
}
Windows 8(Windows XPから)に移行するまで、これはうまくいきました。矢印キーを押したままにすると、キーボードのリピート遅延率がオンになります。そのため、オブジェクトは 1 ステップ移動してから一時停止し、その後他のステップが開始されます (文字を押しながらテキスト フィールドに入力するときと同じように)。
このゲームのキーボード リピート ディレイをオフにしたいのですが、どうすればよいかわかりません。また、一度に複数のキーを保持できるようにしたいと思います(斜めに移動できるように)。
KeyBindings を理解しようとしましたが、うまくいきませんでした。