【发布时间】:2019-06-02 12:17:35
【问题描述】:
所以我正在用 java 制作游戏,并且我目前正在使用键盘输入。我有一个名为KeyboardManager 的keylistener 类设置,其中有一个静态函数,用于检测是否按下了某个键。这是该类的代码:
public class KeyboardManager implements KeyListener {
public static Map<Integer, Boolean> keys;
public KeyboardManager () {
keys = new HashMap<>();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
keys.put(e.getKeyCode(), true);
}
@Override
public void keyReleased(KeyEvent e) {
keys.put(e.getKeyCode(), false);
}
public static boolean isKeyDown(int key) {
if (!keys.containsKey(key)) return false;
return keys.get(key);
}
}
isKeyDown 函数工作得非常好,我用它来移动玩家,但如果我用它来打开一个 gui,就像你想象的那样,它会打开和关闭每个滴答声。我正在寻找一种方法来做我现在所拥有的,但使用keyTyped 而不是keyPressed 和keyReleased。这里的挑战显然是无法判断 keytype 何时结束。例如,在 Unity 中,当您在 c# 中编码时,您可以执行 Input.GetKeyDown("E") 之类的操作,它会测试键类型,而 Input.GetKey("E") 会检测它是否被按住。任何帮助将不胜感激。
【问题讨论】:
标签: java swing jframe keylistener