2015-11-06 84 views
1

我目前正在開發一款小遊戲。我使用getKeyCode來移動我的角色,但事情是我不希望你能夠繼續移動,如果你按住按鈕。無論如何,我可以使用getKeyCode僅在第一次點擊時註冊,然後在我釋放按鈕並再次按下之前不會註冊。Java - 想要getKeyCode只註冊一次

else if (event.getKeyCode()== KeyEvent.VK_UP) 
{ 
    spelare1.setLocation(spelare1.getX(),spelare1.getY()-50); 
} 

這是它目前的樣子。

回答

0

我認爲你是令人困惑的KeyEvents。 VK_UP向上箭頭鍵。使用KeyEvent.KEY_RELEASED對已釋放的密鑰進行響應。

0

您可以保留一個布爾值來指示當前是否按下了鍵。然後,你可以每一次按下後在這個例子中的反應,如:

public static void main(String[] args) { 

    JFrame f = new JFrame(); 

    f.addKeyListener(new KeyAdapter() { 
     private boolean pressed; 
     @Override 
     public void keyReleased(KeyEvent e) { 
      pressed = false; 
     } 
     @Override 
     public void keyPressed(KeyEvent e) { 
      if (!pressed) { 
       System.out.println("Key pressed: " + e.getKeyCode()); 
       pressed = true; 
      } 
     } 
    }); 

    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      f.setVisible(true); 
     } 
    }); 
} 

根據您的需求,您可能希望爲每個鍵一個獨立的國家,或只是一個共享的狀態。