Ich entwickle ein Spiel, bei dem die Eingabemethode abgefragt wird. Da ich mich jetzt jedoch eingehender mit den Spielmenüs und anderen UI-Komponenten befasse, möchte ich wahrscheinlich ereignisgesteuerte Eingaben haben. Vielleicht haben Sie sogar beides, verwenden ereignisgesteuert für die Benutzeroberfläche und fragen nach der Eingabe "world". Ich bin gespannt, was der beste Weg ist.
Ich definiere Polling als: Bei jeder Update-Schleife überprüfe ich, welche Tasten gedrückt sind, wo sich die Maus befindet, welche Tasten gedrückt sind, durchlaufe sie und führe Aktionen basierend auf den gesammelten Informationen aus.
Ich definiere ereignisgesteuert als: Interrupt-basierte Ereignisse, wenn ein Ereignis eintritt und ein Interrupt ausgelöst wird und ein Codeblock basierend auf dem Ereignis ausgeführt wird.
Denken Sie, dass es am besten ist, alle Ereignisse abzufragen, alle Abfragen durchzuführen, oder ist eine Kombination aus beidem akzeptabel? Wenn Sie für beides Vor- und Nachteile haben, listen Sie diese bitte auf. Vielen Dank.
BEARBEITEN
Das Spiel basiert auf Java / OpenGL und wird daher für Windows / Mac / Linux veröffentlicht. Die Möglichkeit, dies auf mobile Geräte auszudehnen, ist gering. Das Spiel ist im RTS-Stil, 3rd Person 3D.
BEARBEITEN 2
Ich bin immer noch nicht ganz zufrieden mit der Art und Weise, wie ich dies implementiert habe, aber was ich vorantreibe, ist, Ereignisse in meiner Benutzeroberfläche zu erfassen. Wenn sie nicht von einer meiner Benutzeroberflächenkomponenten verarbeitet werden, leite ich das Ereignis an die weiter "Welt" zur Auswahl. So etwas wie:
@Override
private boolean handleEvent(Event event) {
if(hud.handleEvent(event)) {
return true;
}
return WORLD.handleEvent(event);
}
Auf diese Weise bekomme ich keine Klicks durch die Benutzeroberfläche, um Objekte hinter Schaltflächen auszuwählen und was nicht.
Momentan basieren meine Kamerasteuerungen noch auf Abfragen, und das scheint momentan zu funktionieren, aber ich kann das später aktualisieren.
Ich freue mich über alle Antworten, sorry, ich konnte nur eine auswählen!