Key Listener arbeitet Fehlerhaft

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich möchte ein kleines Spiel programmieren in welchem ich mit einem Raumschiff umherfliegen kann und Asteroiden zerschiessen muss!
2 Dimensional!

Mit Hilfe meines Mathe LK Wissens etc konnte ich bereits ein Raumschiff erstellen mit dem man hin und herfliegen kann(Sinus Cosinus Tangengs und davon die Umkehrfunktionen zu kennen ist garnichtmal so verkehrt).


Nun gibt es folgende Tastenbelegung:

Pfeiltasten:
Links=Raumschiff nach links drehen
Rechts=Raumschiff nach rechts drehen
Oben=Beschleunigen
Unten=Abbremsen


Soweit hat auch alles geklappt! Double Buffering, Paint, Update Methoden überschrieben.
Hier rumgewurschtelt da rtumgewurschtelt...

Nun hab ich eine 25fps machende nette kleine Anwendung mit der man so wie es sein soll umherfliegen kann



Nur bei der Eingabe durch den Keylistener haperts!




Erstmal mein Code:
Code:
    public class KeyListenerAdaptiert extends KeyAdapter{
        public void keyPressed(KeyEvent e){
            int id = e.getKeyCode();
                //Links
            if(id==37){
                control.linksDrehenAn();
                //Rechts
            }else if(id==39){
                control.rechtsDrehenAn();
                //Oben
            }else if(id==38){
                control.beschleunigenAn();
                //Unten
            }else if(id==40){
                 control.bremsenAn();
            }
        }
        public void keyReleased(KeyEvent e){
            int id = e.getKeyCode();
            //Links
            if(id==37){
                 control.linksDrehenAus();
                //Rechts
            }else if(id==39){
                 control.rechtsDrehenAus();
                //Oben
            }else if(id==38){
                control.beschleunigenAus();
                //Unten
            }else if(id==40){
                control.bremsenAus();
            }
        }
    }

Ich denke das geübte Auge wird mit meinen Beschriftungen oben zurechtkommen! "KeyPressed" startet die Aktionen, welche daraufhin woanders in einem Thread solange ausgeführt werden bis das "KeyReleased"-Event den Thread stoppt!



Folgender Effekt tritt auf:
Wenn ich einzeln hintereinander die Tasten <- und -> drücke klappt es wunderbar!
Wenn ich jedoch beide Tasten drücke und eine davon loslasse gibt es eine kleine Verzögerung bevor die andere Taste zu wirken beginnt... dies passiert auch wenn ich ganz schnell abwechselnd <- und -> drücke.
Wenn ich 3 Tasten drücke klappt das auch noch nicht so ganz..

PS: Was ist eigentlich der gamelistener? Google will mir iwie nicht sagen ob ich damit mein Problem lösen kann...und hier im Forum gibt es auch keine beschreibung dazu..


Danke für Eure Hilfe! Wenn noch fragen bestehen schreibt,
Richi
 

Quaxli

Top Contributor
Hehe, das Problem hat fast jeder mal, der anfängt, sich mit Spieleprogrammierung zu beschäftigen ;)
Es ist auch ganz einfach zu lösen. Statt die Methoden von control aufzurufen setzt Du an diesen Stellen nur boolean-Werte. In Deinem GameLoop fügst Du dann eine Methode ein, die checkKeys() oder so heißt und wertest dort die boolean-Variablen aus.

Das Ganze sieht also etwa so aus:

Code:
    public class KeyListenerAdaptiert extends KeyAdapter{
        public void keyPressed(KeyEvent e){
                //Links
            if(e.getKeyCode()==KeyEvent.VK_LEFT{    //;)
                left = true;
            }
            ....
        }
    }

Falls Du ein detaillierteres Beispiel brauchst, klicke mal links in meiner Signatur auf "Spieltutorial" ;)
 

Leroy42

Top Contributor
Nochwas:

Code:
if(id==37){ 
                control.linksDrehenAn();

Ich würde es vermeiden, Zahlen zu benutzen.

Code:
if(id==VK_LEFT){ 
                control.linksDrehenAn();

sagt doch vielmehr aus! :D
 
G

Guest

Gast
Hmmm
Ich hab nen Loop der alle 40 MilliSekunden neu zeichnet! Das meinste dann mit gameloop!
Dort füg ich dann einfach mal eine Methode aus, die prüft ob die Booleanwerte gesetzt sind.
Werd ich gleich mal machen...

Und wieso ist das so?? Logisch gesehen ist das doch irrelevant oder?
 
G

Guest

Gast
Ich habs übrigens geschafft nach der Methode mein Programm zu optimieren!
Zusätzlich fügte ich noch eine Abfrage hinzu die das Wenden ausschaltet wenn beide Tasten gedrückt sind!

Danke vielmals!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
D String value change listener Java Basics - Anfänger-Themen 2
topi WindowAdapter / Listener / Event Java Basics - Anfänger-Themen 4
L Problem mit Listener Java Basics - Anfänger-Themen 0
P Listener registrieren Java Basics - Anfänger-Themen 40
Salo JTabel Selection listener Bsp. Java Basics - Anfänger-Themen 3
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
M Compiler-Fehler Using action listener Java Basics - Anfänger-Themen 1
F Listener schreiben Java Basics - Anfänger-Themen 1
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
B Listener beim Laden (deserialize) wieder hinzufügen bzw. mitspeichern? Java Basics - Anfänger-Themen 3
J Listener Java Basics - Anfänger-Themen 4
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
llabusch Kombinationsfeld - LISTENER Java Basics - Anfänger-Themen 0
S Eigenen Listener zu eigenen Button! Java Basics - Anfänger-Themen 5
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
K On Click listener Problem Java Basics - Anfänger-Themen 4
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
G Listener ohne Objekt Java Basics - Anfänger-Themen 5
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
H Eigenen Listener einbauen Java Basics - Anfänger-Themen 5
K Key Listener bei 2 gleichzeitig gedrückten tasten Java Basics - Anfänger-Themen 3
M Bäume und Listener Java Basics - Anfänger-Themen 2
K Erste Schritte table Listener noob frage Java Basics - Anfänger-Themen 3
E eigenständige Listener-Klasse Java Basics - Anfänger-Themen 9
T Motion listener Java Basics - Anfänger-Themen 10
U Listener erstellen Java Basics - Anfänger-Themen 16
N Variablen aus Action Listener lesen und weiterverarbeiten Java Basics - Anfänger-Themen 12
M listener Java Basics - Anfänger-Themen 16
L Listener Problem in Klasse Java Basics - Anfänger-Themen 8
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
L Window Listener Java Basics - Anfänger-Themen 2
Kenan89 JTable: Listener Java Basics - Anfänger-Themen 4
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
A action listener Java Basics - Anfänger-Themen 8
M Netbeans Listener - Anonymous, inner class, main class? Java Basics - Anfänger-Themen 4
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
E Mehrere Listener auf einen Button? Java Basics - Anfänger-Themen 3
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
X Problem bezüglich Key Listener Java Basics - Anfänger-Themen 3
Y Button hört nicht auf Listener Java Basics - Anfänger-Themen 5
H JTable, Listener und CellEditor Java Basics - Anfänger-Themen 8
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
M Listener Objekte Java Basics - Anfänger-Themen 12
S Applet Key Listener Java Basics - Anfänger-Themen 6
J Action Listener Java Basics - Anfänger-Themen 2
G Probleme mit Listener Java Basics - Anfänger-Themen 27
B Wert einer Variable mit Listener ueberwachen Java Basics - Anfänger-Themen 3
F Port Listener Java Basics - Anfänger-Themen 9
J JComboBox Listener Java Basics - Anfänger-Themen 6
J Window-Listener funktionieren nicht Java Basics - Anfänger-Themen 7
N Frage zu Listener für Textfelder Java Basics - Anfänger-Themen 5
Benji0815 Eigenen Listener schreiben Java Basics - Anfänger-Themen 13
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
S Key-Listener richtig "einbauen" Java Basics - Anfänger-Themen 42
S Listener von ausserhalb aufrufen Java Basics - Anfänger-Themen 2
S Action Listener Java Basics - Anfänger-Themen 6
Sweety Listener in Swing Java Basics - Anfänger-Themen 8
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6
Developer_X Mouse MOTION listener example Java Basics - Anfänger-Themen 5
J Mouse-Listener Java Basics - Anfänger-Themen 3
I Listener Klassen in Package Java Basics - Anfänger-Themen 3
StickToFreak Applet -> GameLoop + Listener / Listener funktioniert nicht Java Basics - Anfänger-Themen 22
B externer Listener für Zeichenbereich? Java Basics - Anfänger-Themen 2
D dialog listener? Java Basics - Anfänger-Themen 2
C Listener und Events Java Basics - Anfänger-Themen 10
E Listener Java Basics - Anfänger-Themen 2
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
G jtable listener wenn zeile markiert wird Java Basics - Anfänger-Themen 6
S Action Listener Funktioniert nicht Java Basics - Anfänger-Themen 6
D Kombinationsfeld => Realisierung im Listener? Java Basics - Anfänger-Themen 2
G LIstener bei JavaMail Java Basics - Anfänger-Themen 2
G Context Listener des Apache Tomcat verwenden Java Basics - Anfänger-Themen 4
D Listener bzw. Interfaces Java Basics - Anfänger-Themen 7
A Wo/Wie Event Listener Java Basics - Anfänger-Themen 3
G Window Listener? Java Basics - Anfänger-Themen 2
G 2 Listener wiedersprechen sich. Java Basics - Anfänger-Themen 12
G Listener für JPanel für Statusmeldungen Java Basics - Anfänger-Themen 3
F Listener für Variable Java Basics - Anfänger-Themen 29
A Gibt es standardmässig in Java einen Verzeichnis-Listener? Java Basics - Anfänger-Themen 6
N Listener für datei Java Basics - Anfänger-Themen 13
S Mit Listener AWT Objekte ansprechen Java Basics - Anfänger-Themen 2
G listener für radiobutton Java Basics - Anfänger-Themen 1
G Listener Java Basics - Anfänger-Themen 5
G Listener Problem Java Basics - Anfänger-Themen 3
B Wiso funktioniet das nicht? (Listener) Java Basics - Anfänger-Themen 6
H Key Listener macht nicht das was er soll Java Basics - Anfänger-Themen 4
T Wartet Klasse auf Listener? Java Basics - Anfänger-Themen 3
D Listener? Java Basics - Anfänger-Themen 2
S Listener auf JTextfeld Java Basics - Anfänger-Themen 8
B Kommunikation zwischen Klasse und Listener Java Basics - Anfänger-Themen 2
C Benutzereingaben vor Listener abfangen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben