Moinsen alle miteinander.
Ich habe mit Java angefangen und programmiere gerade eine kleine 2dEngine, welche ich Später für Jump&Runs nutzen möchte.
Dafür nutze ich Javax.Swing (JFrame/JPanel&Co).
Soweit ich weiß laufen Swing komponenten in einem eigenen Thread, wobei Swing nicht Threadsicher ist.
Mein anfänglicher aufbau sieht wie folgt aus:
Gameengine(Abgeleitet von JFrame, hier findet die gesamte Programmlogik statt, außer das Rendern)
Screen(Abgeleitet von JPanel, führt NUR die renderoperationen aus, keine schreiboperationen in die variablen andere komponenten, oder welche durch andere komponenten verändert werden könnten, ist ChildObject der Gameengine)
Die main funktion erstellt ein Gameengine objekt, und alles weitere läuft dann im Gameengine objekt ab.
Daraufhin erstellt das Gameengine object ein Screenobject, und übergibt beim konstruktor einen verweis auf die Mapdaten.
Als letztes wird ein timer erstellt, der 60mal pro sekunde die Gameengine Logik ausführt, ist der Logikteil fertig, ruft er repaint() auf, womit automatisch das paint event aller screens ausgelößt wird.(hier könnt ich vielleicht noch ein automatisches repaint der komponenten verhindern. Wen zb ein teil des fensters verdeckt war und wieder sichtbar wird, wird von java nunmal ebenfalls repaint getriggert)
Die screens LESEN jetzt die mapdaten und zeichnen den benötigten inhalt auf sich selbst, keine anderweitigen schreiboperationen die etwas außerhalb des Screenobjetcs beeinflussen.
Folgende Fragen stellen sich mir:
-Laufen alle Swing objekte in EINEM neuen Thread, oder hat jedes Swing objekt seinen eigenen Thread
-Wenn alle möglichen schreiboperationen vom Gameengine objekt ausgehen, und die Screens lediglich Lesemöglichkeiten haben, wie sieht es da mit der Threadsicherheit aus? (ich weiß, das bei 2 zeitgleichen schreiboperationen in der selben Adresse das ganze zusammen klappt, aber wie verhält es sich hierbei?)
Wenn noch etwas unverständlich ist, bitte nachfragen, ich neige oft zu konfusen erklärungen
"
MFG
Memnarch