Klasa Input jest wysokopoziomowym wrapperem nad niskopoziomowym systemem wejścia. Zarządza śledzeniem stanu klawiatury, w tym naciśnięciami klawiszy oraz stanami przytrzymania, jednocześnie opcjonalnie filtrując „zablokowane” klawisze (np. klawisze strzałek, spację oraz określone klawisze akcji). Udostępnia uproszczone API do zapytań o stan wejścia w pętlach gry lub aplikacjach interaktywnych.
Creation → Update → Destruction
Creation
InputState jest tworzony za pomocą createInputState(blockedKeys).attachInput.Update
InputState jest aktualizowany pośrednio przez listenery zdarzeń.isDown i isPressed.Destruction
constructor(blockedKeys?: string[])Tworzy nową instancję handlera wejścia.
Parameters
blockedKeys (opcjonalne): Tablica identyfikatorów klawiszy ignorowanych w przetwarzaniu wejścia.
["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", " ", "e"]isDown(key: string): booleanSprawdza, czy klawisz jest obecnie wciśnięty.
Returns
true jeśli klawisz jest aktualnie wciśniętyfalse w przeciwnym razieisPressed(key: string): booleanSprawdza, czy klawisz został naciśnięty w bieżącym cyklu aktualizacji.
Returns
true jeśli klawisz przeszedł ze stanu up → down w bieżącej klatcefalse w przeciwnym razieclearPressed(): voidResetuje wszystkie stany „pressed”.
getState(): InputStateZwraca bazowy obiekt stanu wejścia.
Returns
InputState używana do śledzenia wejściaKlasa zależy od zewnętrznego modułu wejścia (../input), który dostarcza:
InputStatecreateInputState(blockedKeys) do inicjalizacjiattachInput(state) do rejestrowania listenerów zdarzeńisKeyDown(state, key) do ciągłego sprawdzania wejściaisKeyPressed(state, key) do wykrywania wejścia krawędziowegoclearPressed(state) do resetowania flag naciśnięć per klatkablockedKeys są przekazywane przy inicjalizacji i używane przez system bazowy do filtrowania niechcianych lub zarezerwowanych wejść.
Klasa sama nie nasłuchuje bezpośrednio zdarzeń; deleguje całe śledzenie wejścia do współdzielonego InputState.
Pełni rolę cienkiej warstwy abstrakcji upraszczającej użycie w pętlach gry lub systemach UI.
import { Input } from "./Input";
const input = new Input();
// Game loop
function update() {
if (input.isDown("ArrowLeft")) {
console.log("Moving left continuously");
}
if (input.isPressed(" ")) {
console.log("Jump triggered");
}
// Reset per-frame press states
input.clearPressed();
}
InputState – Wewnętrzna struktura przechowująca stany klawiszycreateInputState – Inicjalizuje stan śledzenia wejściaattachInput – Podpina listenery zdarzeń klawiaturyisKeyDown – Sprawdza ciągły stan klawiszaisKeyPressed – Sprawdza stan krawędziowy klawiszaclearPressed – Resetuje flagi naciśnięć klawiszy per klatka