【发布时间】:2014-12-09 18:01:18
【问题描述】:
我正在用 Java 制作一个游戏,我希望能够走到一个 NPC 面前并按下空格与他们交谈。但是,我的 KeyBoard 类现在面向移动键(wasd 和左下右),它总是识别按下以保持玩家移动。我将如何设置它,以便空格键只有在按下后才能被识别,并且在玩家释放它并再次按下它之前无法识别?
public class Keyboard implements KeyListener
{
private boolean[] keys = new boolean[120];
public boolean up, down, left, right, interact;
public void update()
{
up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W];
down = keys[KeyEvent.VK_DOWN] || keys[KeyEvent.VK_S];
left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A];
right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D];
interact = keys[KeyEvent.VK_SPACE];
}
public void keyPressed(KeyEvent e)
{
keys[e.getKeyCode()] = true;
}
public void keyReleased(KeyEvent e)
{
keys[e.getKeyCode()] = false;
}
}
【问题讨论】:
-
创建一个获取值的
retrieveAndReset方法,如果true将其设置为false?无论如何,方法应该优先于直接变量访问,您不需要update()方法。您可能不想在释放它时重置空格键值;短按键也应该被注册。
标签: java keylistener