Java KeyListener不按预期保存布尔值

时间:2018-10-02 05:09:49

标签: java input keylistener

这是我的Input类:

private boolean[] keys = new boolean[256];
private boolean[] keys_last = new boolean[keys.length];

public Input(Window window) {
    window.getCanvas().addKeyListener(this);
}

public boolean isKey(int keyCode) {
    return keys[keyCode];
}

public boolean isKeyDown(int keyCode) {
    return keys[keyCode] && !keys_last[keyCode];
}

public boolean isKeyUp(int keyCode) {
    return !keys[keyCode] && keys_last[keyCode];
}

public void keyPressed(KeyEvent e) {
    keys[e.getKeyCode()] = true;
}

public void keyReleased(KeyEvent e) {
    keys[e.getKeyCode()] = false;
}

public void keyTyped(KeyEvent e) {}

public void tick() {
    for (int i = 0; i < keys.length; i++) {
        keys_last[i] = keys[i];
    }

}

public boolean[] getKeys() {
    return keys;
}

public boolean[] getKeysLast() {
    return keys_last;
}

然后暂时在我的Window类中,我正在测试输入。我的isKey(keyCode)方法可以正常工作,但是我的isKeyDown()和isKeyUp()无法正常工作。我希望它使isKeyDown()在按下按钮的第一帧为true,而isKeyUp()在释放按钮的第一帧为true。

我的理论是,如果您按下按钮,则此刻度的键int []值将为true,而keys_last int []值将为false。

但是,当我为每个刻度线显示特定键的真实值时(例如说F),我找不到一个显示相反值([70]和keys_last [70])的帧。是F)。

0 个答案:

没有答案