Aufruf einer render-Methode

Roovy

Aktives Mitglied
Ich habe ein Interface "GameState" erstellt, von dem jeder State erbt und diese Methode erhält:
Code:
public void render(Graphics g) { }
Nun habe ich auch eine Klasse "GameStateManager". Diese Klasse enthält verschiedene Methoden zum hinzufügen von GameStates und ändern des States. Unter anderem auch eine Methode die
Code:
public void render(Graphics g)
des aktuellen GameStates ausführt. Diese Funktion soll jetzt aus einer zweiten Klasse "GameLoopMaster" genutzt werden. GLM enthält eine Methode 'start()', die dann in einem while-Loop die 'renderCurrentState(Graphics g)'-Methode des GameStateManagers aufrufen soll.
Nun kann ich es aber einfach nicht zum laufen kriegen! Was genau muss ich im GameLoopMaster jetzt als Argument der Methode vom GSM übergeben?
 

Roovy

Aktives Mitglied
Ja, aber wie initialisiere ich dieses? Ich kann mir keinen Reim darauf machen. Ich müsste ja eigentlich nur in meiner GameLoopMaster-Klasse eine Graphics-Obhekt erstellen und übergeben. Aber genau da liegt mehr oder weniger das Problem. Tut mir leid, sollte das nicht aus meiner ersten Aussage hervor gegangen sein.
 

Sogomn

Bekanntes Mitglied
Naja, zeichnen kann man in der Regel nur auf irgendeiner Oberfläche (einem Bild oder Fenster). Die Klasse "Component" (oder "JComponent") hat z.B. die Methode "getGraphics()", die dir das entsprechende Graphics-Objekt gibt.
 

Sogomn

Bekanntes Mitglied
Musst Du nicht zwingend. Du kannst auch, ohne auf dem Bildschirm anzeigen zu lassen, auf ein Bild zeichnen.

Code:
final BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
final Graphics2D g = image.createGraphics();
 

Sogomn

Bekanntes Mitglied
Double-Buffering hängt von der Oberfläche, auf der Du zeichnest, ab. So weit ich weiß, unterstützt z.B. die Klasse JPanel es nicht explizit.
Ich benutze weiterhin die Klasse Canvas aus dem AWT-Package (ja, hasst mich alle dafür).

Code:
final Canvas canvas = new Canvas();

myFrame.setVios//Fenster mit Canvas sichtbar machen, bevor die Buffer erstellt werden!

canvas.createBufferStrategy(2); //1 Extrabuffer reicht

//...

final BufferStrategy bufferStrategy = canvas.getBufferStrategy();

do {
    final Graphics2D g = (Graphics2D)bufferStrategy.getDrawGraphics(); //Kann man sicher casten

    //...

    g.dispose();
    bufferStrategy.show(); //Front- und Backbuffer tauschen
} while (bufferStrategy.contentsLost()); //Es kann passieren, dass der Buffer irgendwie verloren geht, daher die Schleife

In der Dokumentation wird das ganze sogar in zwei Schleifen gepackt, da es auch sein kann, dass der Inhalt des Buffers zurückgesetzt wird ("BufferStrategy#contentsRestored()").
Hier genaueres.
 

Roovy

Aktives Mitglied
Mit den beigepackten Javadocs habe ich es hingekriegt. Versuche ich es aber als ein Loop (wie bei dir) zu realisieren zeichnet es bei mir nicht mehr?! Bzw ist es nötig diese zwei Loops zu machen, die durchlaufen, wenn contentsRestored und contentsLost zutrifft?
 
Zuletzt bearbeitet:

Sogomn

Bekanntes Mitglied
Soweit ich das verstanden habe, gibt contentsRestored() nur true zurück, wenn sich die Zeichenfläche irgendwie neu initialisiert hat (also irgendein Kram mit dem Canvas gemacht wird?).
Und falls das doch mal vorkommen sollte - es ist nur ein verlorenes Frame; bei konstantem Neuzeichnen fällt das nicht weiter auf.
 
Zuletzt bearbeitet:

Roovy

Aktives Mitglied
Ich habe noch eine Frage hinsichtlich des Renderns: Das Grafikobjekt malt ja (von den Koordinaten ausgehend) auch unter der Windows Toolbar und den Rändern des Fensters. Kann man etwus tun, um das nicht kompensieren zu müssen?
 

Sogomn

Bekanntes Mitglied
Du meinst, dass nicht sichtbare Dinge einfach nicht gezeichnet werden? Leider nicht. Das musst Du manuell prüfen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W rekursiver aufruf zum aufdecken von feldern bei minesweeper Spiele- und Multimedia-Programmierung 2
P NullPointerException bei Aufruf von Methode Spiele- und Multimedia-Programmierung 10
S Sudoku Solver funktioniert beim 2. Aufruf nicht mehr Spiele- und Multimedia-Programmierung 11
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
M Audio Track einer Musik CD abspielen mittels vlcj-Bibliothek Spiele- und Multimedia-Programmierung 0
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
C Optimale Wegberechnung einer KI Spiele- und Multimedia-Programmierung 6
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
R Einfärben von Gemeinden auf einer Karte Spiele- und Multimedia-Programmierung 14
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
M Scrolling einer 2D Map Spiele- und Multimedia-Programmierung 8
J In einer While-Schleife auf Event warten Spiele- und Multimedia-Programmierung 3
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
F Download und Update einer Java-Anwendung Spiele- und Multimedia-Programmierung 10
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
aze Schnittmenge zwischen Linie und einer Area wegschneiden Spiele- und Multimedia-Programmierung 3
A Bild einer Webcam auffangen Spiele- und Multimedia-Programmierung 20
G Ballerkennung aus einer Bilddatei Spiele- und Multimedia-Programmierung 24
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
H Screenshot einer Graphics2D Anwendung erstellen Spiele- und Multimedia-Programmierung 6
F Simulation einer Magnetischen Flasche Spiele- und Multimedia-Programmierung 17
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
J Fehlverhalten einer Spielfigur Spiele- und Multimedia-Programmierung 7
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
M Das Frequenzspektrum einer WAV/MP3-Datei anzeigen Spiele- und Multimedia-Programmierung 6
M Rechteck erkennung innerhalb einer Matix Spiele- und Multimedia-Programmierung 4
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
E Pinball Abprall an einer schrägen Bande Spiele- und Multimedia-Programmierung 19
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
A Tutorial für die Entwicklung einer Fussball-KI gesucht Spiele- und Multimedia-Programmierung 7
S Rotation relativ zur Rotation einer anderen Transform Group Spiele- und Multimedia-Programmierung 3
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
G Land aus einer Weltkarte selektieren Spiele- und Multimedia-Programmierung 10
D Kräftesimulation auf einer 2D-Oberfläche Spiele- und Multimedia-Programmierung 5
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
N Background in Java3D ähnlich einer Skybox erzeugen Spiele- und Multimedia-Programmierung 5
H zB Punkte darstellen und mit einer Linier verbinden Spiele- und Multimedia-Programmierung 5
F Darstellung einer tierischen Zelle Spiele- und Multimedia-Programmierung 3
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Das SPiel ruckelt nach einer Zeit Spiele- und Multimedia-Programmierung 19
D wieder einer von anfang an. Spiele- und Multimedia-Programmierung 4
M Darstellung einer schwingenden Membran? Spiele- und Multimedia-Programmierung 23
raptorrs Teile einer CAD-Assembly Gruppe in JAVA animieren? Spiele- und Multimedia-Programmierung 3
K Beschriftung von Punkten in einer "Punktwolke" Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
K Klick in der nähe einer Strecke Spiele- und Multimedia-Programmierung 14
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
TreCore Render Texture in libGDX Spiele- und Multimedia-Programmierung 5
K Android: OpenGL render performance Tipps ? Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben