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
}