当我按下方向键将对象朝那个方向移动时,它会移动一次,然后暂停片刻,然后再次移动。有点像如果我想输入“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,我会按住“a”键,但是在第一个“a”之后有一个暂停,然后输入其余的“a”。如何删除 KeyListener 中的暂停?谢谢你。
问问题
547 次
1 回答
1
这是操作系统提供的关键重复功能,因此无法绕过暂停。大多数游戏解决这个问题的方法是保留所有必需键的当前状态数组,并定期检查它们(例如在游戏循环中)并采取行动(例如移动)。
public class KTest extends JFrame implements KeyListener {
private boolean[] keyState = new boolean[256];
public static void main(String[] args) {
new KeyTest();
int xVelocity = 0;
int x = 0;
while(1) {
xVelocity = 0;
if(keyState[KeyEvent.VK_LEFT]) {
xVelocity = -5;
}
x += xVelocity;
}
}
KTest() {
this.addKeyListener(this);
}
void keyPressed(KeyEvent e) {
key_state[e.getKeyCode()] = true;
}
void keyReleased(KeyEvent e) {
key_state[e.getKeyCode()] = false;
}
}
基类取自:http ://content.gpwiki.org/index.php/Java:Tutorials:Key_States
于 2012-12-22T19:00:46.897 回答