G
Guest
Gast
Hey, ich versuche mich daran, ein kleines Spiel zu schreiben.
Mein Spiel besteht vorwiegen aus der Klasse Main, die von Canvas abgeleitet ist.
Teil dieser Klasse Main ist die Methode Loop, welche so aufgebaut ist:
Darin werden Objekte aktualisiert und gezeichnet.
Immer wenn dieser Loop läuft, werden Mausklicks und Tastaturereignisse nicht bearbeitet.
Diese Ereignisse bearbeite ich, in dem ich im Konstruktor die Listener so hinzufüge:
In den Klassen KeyInputHandler und MouseInputHandler habe ich die entsprechenden Methoden überschrieben.
Läuft der Loop nicht, so funktioniert das wunderbar, aber wenn er läuft, dann nicht. Woran liegt das?
Muss ich dabei einen extra Thread für die Events oder den Loop verwenden? Wie würde ich das am besten machen?
Würde mich über Hilfe freuen.
Mein Spiel besteht vorwiegen aus der Klasse Main, die von Canvas abgeleitet ist.
Teil dieser Klasse Main ist die Methode Loop, welche so aufgebaut ist:
Code:
public void Loop(){
while (running){
Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
g.setColor(Color.white);
g.fillRect(0,0,800,600);
g.setColor(Color.black);
for (Entity entity: microbes) { entity.update(); entity.draw(g); }
g.dispose();
strategy.show();
try {Thread.sleep(10);} catch (Exception e) {}
}
Darin werden Objekte aktualisiert und gezeichnet.
Immer wenn dieser Loop läuft, werden Mausklicks und Tastaturereignisse nicht bearbeitet.
Diese Ereignisse bearbeite ich, in dem ich im Konstruktor die Listener so hinzufüge:
Code:
addKeyListener(new KeyInputHandler());
addMouseListener(new MouseInputHandler());
requestFocus();
In den Klassen KeyInputHandler und MouseInputHandler habe ich die entsprechenden Methoden überschrieben.
Läuft der Loop nicht, so funktioniert das wunderbar, aber wenn er läuft, dann nicht. Woran liegt das?
Muss ich dabei einen extra Thread für die Events oder den Loop verwenden? Wie würde ich das am besten machen?
Würde mich über Hilfe freuen.