2009-04-13 11 views
3

Ich bin auf der Suche nach einem effizienten Tastatur-Eingabesystem für ein Spiel in Java. Derzeit verwende ich einige Code, den ich hier gefunden:Keyboard Polling System

Keyboard Input Polling System

es scheint ein wenig ineffizient aber (Kommentar bitte so, um Ihre Gedanken auf dem Code). Der vollständige Code ist hier verfügbar:

Pastebin Code

ich gerade erst begonnen haben Blick in eine neue Lösung und den Code auseinanderziehen, aber hat jemand irgendwelche Vorschläge für eine effiziente Möglichkeit, dies in einem Hauptspiel zu tun Schleife (einschließlich einer Erklärung)? Jede Hilfe wäre willkommen.

Antwort

3

Einen KeyEventListener einrichten; Wenn es aufgerufen wird, lege den aktuellen Schlüssel in einen Ein-Schlüssel-Puffer.

Fragen Sie im Berechnungsthread oder in einem Abfragethread den aktuellen Schlüsselpuffer regelmäßig ab. Jetzt, anstatt dieses konstante Blick auf die I/O, haben Sie den Event-Listener es tun (die bereits stark optimiert und sauber implementiert ist, um die zugrunde liegende Hardware zu verwenden), während Sie Ihre regelmäßigen Abfragen halten.

+1

Dies funktioniert nicht für mehrere Tasten, die in einem Spiel üblich sind – Ron

1

Ich denke, es ist toller Code. Der verknüpfte Autor hat eine Pull-Format-Datenübertragung von der Tastatur anstelle der üblichen KeyListener-Push-Methode implementiert. Diese Implementierung unterstützt N-key rollover, jedoch ist die Grenze mit USB 6-8 Tasten gleichzeitig.

Wenn Sie es ein bisschen aufräumen möchten, dann speichern Sie nur die Schlüssel, auf die Sie achten möchten. Dies wird Ihnen jedoch nicht viel ersparen, nur ein einzelnes int wird jedes Mal in ein Array geschrieben, wenn eine Taste gedrückt wird.

Was genau finden Sie ineffizient? Für den Anfang sehe ich keine Schleifen im verknüpften Code.