Loop blockt alle Events

Status
Nicht offen für weitere Antworten.
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:

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. :)
 
G

Guest

Gast
Da steht zwar allmöglicher komplizierter Kram, aber ich hab nicht das Gefühl, dass mich das weiterbringt.
Und die einfachen Beispiele hab ich vergeblich gesucht?

Um Eventhandling und das Spiel selbst in zwei verschiedenen Threads zu haben, müsste ich sie in zwei verschiedenem Klassen unterbringen, die Runnable inplementieren, richtig? Dann müsste ich zwei Threadobjekte erstellen und diesen Objekte meiner Klassen übergeben. So die Theorie.

Nur wie bekomme ich die beiden Teile des Programms denn auseinander? Die Events sind ja vom Canvas direkt abhängig.

Würde mich über eine hilfreiche Antwort freuen. :) Hab hier selber das "Handbuch der Java Programmierung" von Addison Valley, aber die Beispiele darin helfen mir hier bei wenig...
 
S

SlaterB

Gast
> Und die einfachen Beispiele hab ich vergeblich gesucht?

was ist denn hier mit Listing 9.1 usw?

http://www.galileocomputing.de/open...09_002.htm#mj7295ae436b4e0e5bdbcfba4cecb8161d

einfacher wirds nicht,

gut man musste umblättern, aber dafür waren das auch weniger als 5 Seiten im ersten Abschnitt ;)

--------

zum Link:
dort wird gameLoop() in der main gestartet und nicht in der GUI wie wahrscheinlich bei dir

da gibt es also den main-Thread und den GUI-Thread,

so könntest du es auch machen, in der main irgendwie Loop() aufrufen,

da du bisher noch nicht mal verraten hast, wie du überhaupt Loop() aufrufst usw,
sind das alles nur Mutmaßungen
 
G

Guest

Gast
Super, danke! Dann ruf ich in der Main den Loop auf. Er erstellt dann automatisch einen neuen Thread, oder wie muss ich das verstehen?

Die Listings 9.1 etc. hab ich schon verstanden, ich hätte nur nicht gewusst, wie ich das jetzt auf mein Projekt anwenden würde, weil ich ja trotzdem noch auf die andere Klasse zugreifen müsste, aber hat sich ja vorerst erledigt.
 
S

SlaterB

Gast
der main-Thread läuft von Anfang an,
wenn du eine GUI erstellst, dann gibt es dort einen neuen Thread
und normalerweise läuft main dann aus,

so benutzt du main weiter
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ranger229 Endless loop in while Schleife Java Basics - Anfänger-Themen 3
P Best Practice While loop schleife Java Basics - Anfänger-Themen 5
I Scanner Loop Java Basics - Anfänger-Themen 1
J Erste Schritte Unendlichen Loop stoppen Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
L loop für Namen Java Basics - Anfänger-Themen 11
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
iman Loop Java Basics - Anfänger-Themen 21
CT9288 Permanent laufender loop mit Eingabefunktion gesucht Java Basics - Anfänger-Themen 1
P for-loop Java Basics - Anfänger-Themen 10
B Verwirrender Game Loop Java Basics - Anfänger-Themen 6
W While-Loop unterbrechen Java Basics - Anfänger-Themen 4
I TextField Array mit for Loop erzeugen Java Basics - Anfänger-Themen 4
D Was ist Loop: ? Java Basics - Anfänger-Themen 13
Zeekay Development Erste Schritte Spitzen via For-Loop Java Basics - Anfänger-Themen 4
E Wenn i (for-Loop) bestimmter Wert, dann neue Zeile eines Buttons Java Basics - Anfänger-Themen 7
K Loop ohne Schleifen Java Basics - Anfänger-Themen 2
M bufferedreader loop stoppen Java Basics - Anfänger-Themen 2
R window-Klasse, main-loop und unausschaltbares anti-aliasing Java Basics - Anfänger-Themen 0
S clip.loop(Clip.LOOP_CONTINUOUSLY); stoppen klappt nicht! Java Basics - Anfänger-Themen 11
S Warum erlaubt ein while-Loop keine Variablen-Declaration wie der for-Loop..? Java Basics - Anfänger-Themen 6
S Printstream für einen Hashmap Loop Java Basics - Anfänger-Themen 1
E Integer oder Strings spiegeln (in while loop) Java Basics - Anfänger-Themen 6
G Game Loop Problem Java Basics - Anfänger-Themen 9
P Interpreter-Fehler Im for loop funkzioniert repaint nicht :( Java Basics - Anfänger-Themen 4
D Loop Funktion für Robot Klasse Java Basics - Anfänger-Themen 5
Devil0s while loop, Button action Java Basics - Anfänger-Themen 8
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
L Mit ChangeListener JSpinner Loop erstellen Java Basics - Anfänger-Themen 2
N Problem mit Loop Java Basics - Anfänger-Themen 2
A For each loop Java Basics - Anfänger-Themen 3
A Vectors in for-loop Java Basics - Anfänger-Themen 6
S For-Each Loop Java Basics - Anfänger-Themen 16
G Loop funktion Java Basics - Anfänger-Themen 6
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
missy72 Methoden Alle rekusiven Aufrufe abbrechen Java Basics - Anfänger-Themen 21
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
E Select nimmt nicht alle Where /AND befehlen an Java Basics - Anfänger-Themen 4
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
R Methoden Eclipse schlägt mir nicht alle Möglichkeiten vor Java Basics - Anfänger-Themen 4
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
L Alle Ziele in einem Raster abknallen Java Basics - Anfänger-Themen 17
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
Dimax Erste Schritte String replace alle Zeichen Java Basics - Anfänger-Themen 10
L Wie vergrößere ich ein Rechteck in alle Richtungen um eins und bekomme dessen Rand? Java Basics - Anfänger-Themen 2
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
X Erste Schritte String: Alle doppelten Leerzeilen entfernen Java Basics - Anfänger-Themen 21
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
Kirby.exe Alle möglichen Error Möglichkeiten abfangen Java Basics - Anfänger-Themen 33
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
D Alle Möglichkeiten, n-Anzahl aus Elementen aus einem Array zu wählen, ausgeben? Java Basics - Anfänger-Themen 23
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
D Methoden Eigene Methode um alle Ausgaben aufzurufen Java Basics - Anfänger-Themen 17
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
A In einem String alle Eigennamen zählen Java Basics - Anfänger-Themen 6
B Klassen Alle Unter-Objekte durchlaufen in der Hauptklasse Java Basics - Anfänger-Themen 10
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
B Webservice -> alle parameter bekommen von form Java Basics - Anfänger-Themen 2
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
F Eclipse alle Projekt weg Java Basics - Anfänger-Themen 6
V Alle Komponenten eines JPanels Java Basics - Anfänger-Themen 14
I gemeinsame Config-Datei für alle Windows-User Java Basics - Anfänger-Themen 5
H JButton - Wechsel der Textfarbe alle 500ms Java Basics - Anfänger-Themen 10
DaCrazyJavaExpert Alle Zahlenkombinationen aus 9 zahlen finden Java Basics - Anfänger-Themen 17
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
M Alle Instanzen einer Klasse ansprechen Java Basics - Anfänger-Themen 4
S Problem: Array alle Einträge gleich Java Basics - Anfänger-Themen 10
Z Enter Taste alle 0,5 Sekunden ausführen Java Basics - Anfänger-Themen 1
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
K alle Vorkommen einer bestimmten Ziffer in einer Zahl zählen Java Basics - Anfänger-Themen 2
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben