我正在編寫一個小遊戲。到目前爲止,我有一名球員,可以在玩家之後進入2D印刷世界。這裏有一個小的preview。KeyListener事件的短延遲
現在我的球員動作的代碼如下所示:
的KeyListener類
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
for(int i = 0; i < handler.object.size(); i++){
GameObject tempObject = handler.object.get(i);
if(tempObject.getId() == ID.Player){
if(key == KeyEvent.VK_D) tempObject.setVelX(5);
if(key == KeyEvent.VK_A) tempObject.setVelX(-5);
if(key == KeyEvent.VK_SPACE && Var.jump == true) {
tempObject.setVelY(-10);
Var.jump = false;
}
}
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
for(int i = 0; i < handler.object.size(); i++){
GameObject tempObject = handler.object.get(i);
if(tempObject.getId() == ID.Player){
if(key == KeyEvent.VK_D) tempObject.setVelX(0);
if(key == KeyEvent.VK_A) tempObject.setVelX(0);
}
}
Player類
public void tick() {
if (Var.falling == true) {
velY += Var.gravity;
if (velY > 10) {
velY = 10;
}
}
x += velX;
y += velY;
這些代碼都只是類的部分。
問題
當我移動到右側或左側與A或d,然後點擊其它鍵(從a到d /從d到a)在一定的方式,我的字符靜止了很短的時間,然後在短暫的延遲之後移動。見here。
你能具體談談什麼是「以某種方式」是什麼?理想情況下,如果你能解決這個問題,那麼Keydowns和Keyups的確切順序。這可能有助於在程序中記錄這些信息。 – slim