Tastatureingabe für ein Spiel in Java
Ich Schreibe ein Spiel in Java, jetzt ist es ' s Swing + JOGL - ein JFrame mit einem GLCanvas.
Ich Griff Eingabe mit keyPressed
etc. Veranstaltungen (jframe.addKeyListener(...)
) und es scheint nicht richtig zu arbeiten:
- wenn ich 3+ Tasten gedrückt, zur gleichen Zeit, die Sie nicht richtig registrieren - anscheinend ist die Tastatur Schuld, ich habe zu finden eine Alternative Steuerung.
- nachdem das Fenster verliert, gewinnt dann den focus, input reagiert völlig...
Was mache ich falsch?
Gibt es eine bessere Art des Umgangs mit der Tastatur-Eingaben in Java?
(Würde ich eher nicht wechseln zu einer anderen Bibliothek, wie LWJGL... es sei denn, ich habe keine Wahl).
Die 3 key problem werden kann, ist eine Beschränkung der hardware.
en.wikipedia.org/wiki/..., Lesen Sie die zweite Hälfte, es könnte erklären, das 3-Tasten problem.
Ich bezweifle, dass die 3-Tasten-problem ist eine hardware-Einschränkung. Ich habe keine Probleme mit mehr als drei Schlüssel in der Lösung, die ich gepostet habe unten, und ich habe es getestet auf mehreren Computern.
Du hast Recht, es sieht aus wie eine hardware-Einschränkung. Ich war so sicher, dass es ein Java/AWT das problem, das ich vernachlässigt zu prüfen, die in anderen Anwendungen...
aioobe: ich denke, es hängt davon ab, welche drei Tasten, die Sie verwenden.
en.wikipedia.org/wiki/..., Lesen Sie die zweite Hälfte, es könnte erklären, das 3-Tasten problem.
Ich bezweifle, dass die 3-Tasten-problem ist eine hardware-Einschränkung. Ich habe keine Probleme mit mehr als drei Schlüssel in der Lösung, die ich gepostet habe unten, und ich habe es getestet auf mehreren Computern.
Du hast Recht, es sieht aus wie eine hardware-Einschränkung. Ich war so sicher, dass es ein Java/AWT das problem, das ich vernachlässigt zu prüfen, die in anderen Anwendungen...
aioobe: ich denke, es hängt davon ab, welche drei Tasten, die Sie verwenden.
InformationsquelleAutor hmp | 2010-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Halten Abhängigkeiten nach unten, würde ich für die "eingebaute" Tastatur-Handhabung. Es funktioniert nur gut, wenn Sie wissen, was Ihr tut. Ich ' ll fügen Sie einige code von meinen spielen:
Verarbeitet-Taste-wiederholt mit custom repeat-delay /rate und hat keine Probleme mit in die Komponente den Tastatur-Fokus liegt.
InformationsquelleAutor aioobe
Einige der Tipps in diesem Artikel auf Globale event-Listener gehören fangen, wesentliche Ereignisse mit der
KeyboardFocusManager
werden, und es könnte helfen, mit der Rückkehr aus dem Fokus verlieren.Bezug auf die 3+ Schlüssel, das wird schwierig, da die
KeyEvent
Konten für Modifikatoren aber nicht für mehrere (regelmäßige) Schlüssel in der API. Haben Sie vielleicht zu verwalten, die Presse Staat selbst, in, dass, wenn Sie einen KEY_PRESSED, die Sie speichern, die Taste und bauen Sie den Satz von Schlüsseln, die derzeit gedrückt. Aber wenn Sie einfach nicht get-Ereignissen wenn 3 oder mehr Tasten gedrückt werden, ich bin mir nicht sicher, gibt es viel Sie tun können.Edit: Auch die JGame Bibliothek hat eine JOGL Ziel. Schauen, wie es behandelt wichtige Ereignisse helfen könnte. Ich weiß, es kann mit mindestens 2 Tasten gleichzeitig.
InformationsquelleAutor Ash