簡體   English   中英

我簡單的按鍵偵聽器無法正常工作。 似乎沒有切換按下的布爾值。 (Java)

[英]My simple key listener isn't working. It doesn't seem to toggle the pressed boolean. (Java)

我將其用於簡單的2.5D游戲,但是我的按鍵似乎沒有切換。 在主類中調用它不是問題,因為將println語句放置在if語句未運行的情況下。 提前謝謝。

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class InputHandler implements KeyListener {

    public InputHandler(Game game) {
        game.addKeyListener(this);
    }

    public class Key {
        private boolean pressed = false;
        private int numTimesPressed = 0;

        public boolean isPressed() {
            return pressed;
        }

        public int getnumTimesPressed() {
            return numTimesPressed;
        }

        public void toggle(boolean isPressed) {
            pressed = isPressed;
            if (isPressed()) {
                numTimesPressed++;
            }
        }

    }

    // *This is where your keys go.

    public Key up = new Key();
    public Key down = new Key();
    public Key left = new Key();
    public Key right = new Key();

    public void keyPressed(KeyEvent e) {
        toggleKey(e.getKeyCode(), true);

    }

    public void keyReleased(KeyEvent e) {
        toggleKey(e.getKeyCode(), false);

    }

    public void keyTyped(KeyEvent e) {
    }

    public void toggleKey(int keyCode, boolean isPressed) {
        if (keyCode == KeyEvent.VK_W) {
            up.toggle(isPressed);
        }
        if (keyCode == KeyEvent.VK_S) {
            down.toggle(isPressed);
        }
        if (keyCode == KeyEvent.VK_A) {
            left.toggle(isPressed);
        }
        if (keyCode == KeyEvent.VK_D) {
            right.toggle(isPressed);
        }
    }

}

KeyListener的問題在於,僅當將其注冊到的組件具有焦點並具有焦點時,它才會將關鍵事件通知您。

默認情況下,許多容器無法聚焦。

實際上,您最好使用鍵綁定

您可以看一下我正在嘗試使球逐漸移動

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM