2015-11-06 83 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); 
     } 
    }); 
} 

根据您的需求,您可能希望为每个键一个独立的国家,或只是一个共享的状态。