0

基本的に、F1キーが押されるたびにブール値を切り替えようとしています。私のメインクラスには、1 秒間に 60 回呼び出される更新メソッドがあり、次のようなコードを作成しました。

Main.class:

private Keyboard key = new Keyboard; // keyboard object
boolean debug; // boolean to control visibility of debug screen
private boolean toggle; // used to toggle boolean

private void update() { // update is called 60/s
    if (key.isKeyPressed(Keyboard.f1) && !toggle) {
        debug = !debug;
        toggle = true;
    } else if (!key.isKeyPressed(Keyboard.f1)) toggle = false;
}

キーボード クラス:

public class Keyboard implements KeyListener {

private boolean[] keys = new boolean[65536];

public static final int f1 = KeyEvent.VK_F1; // key code of f1 key

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

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

public void keyTyped(KeyEvent e) {
}

public boolean isKeyPressed(int key) {
    return keys[key];
}

このようにして完璧に機能しますが、Keyboard.class で同様のメソッドを作成すると機能しません。

メインクラスの update メソッド:

private void update() {
    key.toggle(Keyboard.f1, debug); // toggle boolean debug if f1 key pressed, but.. NOT WORKING!! WHYYY!!?
}

キーボード クラス:

private boolean toggle;

public void toggle(int key, boolean b) {
    if (isKeyPressed(key) && !toggle) {
        b = !b;
        toggle = true;
    } else if (!isKeyPressed(key)) toggle = false;
}

私の質問は次 のとおりです。なぜ 2 番目の方法が機能しないのですか。 ありがとうございました!

4

1 に答える 1