【发布时间】:2012-11-03 19:56:09
【问题描述】:
我对 java 比较陌生,并且 我正在制作一个涉及使用箭头键移动对象的游戏(按住的时间越长移动的越快)。
这是这些动作的代码(我正在使用 keylistener):
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,但在这样做时遇到了麻烦。
【问题讨论】:
标签: windows-8 keyboard delay keylistener key-bindings