Guten tag,
Ich bin gerade dabei ein Spiel zu entwickeln und habe mir gedacht das ich am besten für die Darstellung des Levels einen Mehrdimensionales (3 dimensionales) Array benutze. Hier drin sind Objekte gespeichert. Die Darstellung funktioniert bei mir so, dass ich eine Hauptklasse habe, die von JPanel erbt und einen JFrame hat, in dem sie sich selbst befindet. Nach dem Konstruktor wird eine Endlosschleife ausgelöst, es handelt sich dabei um eine while schleife, die als Ausgangsbedingung die Methode isVisible() von JFrame hat. In ihr werden nun die repaint() Methode ausgeführt, und der Thread anschließend für 30 Millisekunden schlafen gelegt. In der paintcomponent Methode meines JPanels steht dann alles was angezeigt werden soll. Unter anderem wird auch meine Map gezeichnet. Dies geschieht indem das mehrdimensionale Array mit 3 ineinander verschachtelten for- schleifen abgegrast wird. Die Klassen die sich in dem Array befinden haben alle eine Methode paint(Graphics g) die hier ausgeführt wird.
Soweit so gut, nun aber zu dem Problem.
DasArray wird nicht bei jedem Schleifendurchlauf vollständig gezeichnet, dies äußert sich darin, das die Karte oder teile der selbigen manchmal flackern. Ich weiß nicht woher das kommt, ich habe mit die Zählvariabeln der for-Schleifen ausgeben lassen, und diese sagen, das auch in den fällen wo das Bild flackert, das komplette Array abgegrast und überall die Paint Methode ausgeführt wurde. Es gibt keine Exceptions, und Code der nach dem Zeichnen der Map in paintComponent(Graphics g) steht wird auch problemlos ausgeführt. Ich weis nicht wo das problem liegt, gibt es noch andere Threads die auf meinen Array zugreifen von denen ich nichts weis?
Vielen Dank für alle Antworten
Ich bin gerade dabei ein Spiel zu entwickeln und habe mir gedacht das ich am besten für die Darstellung des Levels einen Mehrdimensionales (3 dimensionales) Array benutze. Hier drin sind Objekte gespeichert. Die Darstellung funktioniert bei mir so, dass ich eine Hauptklasse habe, die von JPanel erbt und einen JFrame hat, in dem sie sich selbst befindet. Nach dem Konstruktor wird eine Endlosschleife ausgelöst, es handelt sich dabei um eine while schleife, die als Ausgangsbedingung die Methode isVisible() von JFrame hat. In ihr werden nun die repaint() Methode ausgeführt, und der Thread anschließend für 30 Millisekunden schlafen gelegt. In der paintcomponent Methode meines JPanels steht dann alles was angezeigt werden soll. Unter anderem wird auch meine Map gezeichnet. Dies geschieht indem das mehrdimensionale Array mit 3 ineinander verschachtelten for- schleifen abgegrast wird. Die Klassen die sich in dem Array befinden haben alle eine Methode paint(Graphics g) die hier ausgeführt wird.
Soweit so gut, nun aber zu dem Problem.
DasArray wird nicht bei jedem Schleifendurchlauf vollständig gezeichnet, dies äußert sich darin, das die Karte oder teile der selbigen manchmal flackern. Ich weiß nicht woher das kommt, ich habe mit die Zählvariabeln der for-Schleifen ausgeben lassen, und diese sagen, das auch in den fällen wo das Bild flackert, das komplette Array abgegrast und überall die Paint Methode ausgeführt wurde. Es gibt keine Exceptions, und Code der nach dem Zeichnen der Map in paintComponent(Graphics g) steht wird auch problemlos ausgeführt. Ich weis nicht wo das problem liegt, gibt es noch andere Threads die auf meinen Array zugreifen von denen ich nichts weis?
Vielen Dank für alle Antworten