Keller-Dev Docs · Java & Hytale

Java Core

Flankenerkennung für Einzeltastendrücke (consumeJustPressed)

Kontinuierliche Bewegung benötigt isPressed() (State-Handling). Aktionen wie Interagieren, Menü-Öffnen oder Angreifen dürfen jedoch nur einmal pro Tastendruck feuern. Tastatur-Auto-Repeat des Betriebssystems muss abgefangen werden. Lösung: Ein justPressedKeys-Set registriert ein Event nur dann, wenn die Taste im vorherigen Frame noch nicht gehalten wurde (!pressedKeys.contains(keyCode)). Beim Auslesen (consumeJustPressed) wird der Status konsumiert und sofort gelöscht.

Referenz: Datei 1. Spielprojekt · Klasse InputHandler
// In InputHandler.java
actionMap.put(name + "_pressed", new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        if (!pressedKeys.contains(keyCode)) {
            justPressedKeys.add(keyCode); // Nur beim initialen Drücken
        }
        pressedKeys.add(keyCode);
    }
});

public boolean consumeJustPressed(int keyCode) {
    return justPressedKeys.remove(keyCode); // Liefert nur 1x true
}
#input #edge-detection #keybindings #thread-safety #concurrency
Bearbeiten