Ich bin gerade dabei ein Spiel zu programmieren.
Wenn ich das Spiel starte funktioniert alles so wie geplant doch nach ung. 1 minute bekomme ich eine Exception und ich kann keine Tasten mehr drücken.
Ich denke das hier der Fehler liegt in der ActionPerformed
Also ich stell mir den Fehler so vor: Er erstellt immer wieder in der actionPerformed mit dem Befehl this.addKeyListener(this); einen neuen keylistener und nach 1 min ist er dan überlasstet und wirf eine Exception. Aber wenn ich diesen Befehl aus der ActionPerformed nehme und sie z.B in den Konstruktor gebe funktionieren die Tasten schon beim Programmstart nicht.
Hier die Exception:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:232)
...... (die setzt sich so 100erte zeilen lang fort aber nicht nur mit keyPressed sondern auch mit released und typed)
Wenn ich das Spiel starte funktioniert alles so wie geplant doch nach ung. 1 minute bekomme ich eine Exception und ich kann keine Tasten mehr drücken.
Ich denke das hier der Fehler liegt in der ActionPerformed
Also ich stell mir den Fehler so vor: Er erstellt immer wieder in der actionPerformed mit dem Befehl this.addKeyListener(this); einen neuen keylistener und nach 1 min ist er dan überlasstet und wirf eine Exception. Aber wenn ich diesen Befehl aus der ActionPerformed nehme und sie z.B in den Konstruktor gebe funktionieren die Tasten schon beim Programmstart nicht.
Java:
@Override
public void actionPerformed(ActionEvent e) {
this.addKeyListener(this);
this.requestFocus();
p.chooseChar();
//Player1
if(p.getPosY() < hoehe-p.getImage().getHeight(this))
{
p.setFreeFall(true);
}
else
{p.setFreeFall(false);
}
p.freeFall();
//Player2
if(p2.getPosY() < hoehe-p2.getImage().getHeight(this))
{
p2.setFreeFall(true);
}
else
{p2.setFreeFall(false);
}
p2.freeFall();
//Player3
if(p3.getPosY() < hoehe-p3.getImage().getHeight(this))
{
p3.setFreeFall(true);
}
else
{p3.setFreeFall(false);
}
p3.freeFall();
p.move();
if(p.getPlayers() >= 2)
{
p2.move2();
}
if(p.getPlayers() >= 3)
{
p3.move3();
}
repaint();
}
Hier die Exception:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:232)
...... (die setzt sich so 100erte zeilen lang fort aber nicht nur mit keyPressed sondern auch mit released und typed)
Zuletzt bearbeitet von einem Moderator: