Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

infusion93

Frischling

  • »infusion93« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Frankfurt

Beruf: Informatikstudent

  • Private Nachricht senden

1

22.10.2015, 09:16

Java Slick: Image nach und nach mit .getGraphics() vervollständigen

Liebe Community,

in Slick wird durchgehend

Quellcode

1
public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException {}
aufgerufen, um etwas in den GameContainer zu zeichnen.
Hierbei habe ich die Möglichkeit, dem GameContainer zu sagen, ob er jeden Frame das Bild clearen soll oder nicht. Ich will das Bild aber nur zum Teil clearen, man muss sich meine Idee so wie zwei Ebenen vorstellen.
  • Auf der hinteren Ebene soll ohne clear einfach die ganze Zeit auf das alte Bild draufgezeichnet werden, wenn ich also pro Frame einen Punkt zeichne, der sich bei jedem Frame etwas bewegt, entsteht nach und nach eine Linie.
  • Auf der oberen Ebene sind Buttons, Text und noch einige Spielelemente, die natürlich nicht immer nur draufgezeichnet werden, sondern wo jedes mal das Bild "gecleared" werden muss.
Meine Idee war also, dass ich für die hintere Ebene ein Image anlege mit dazugehöriger Grafik:

Quellcode

1
final Image i = new Image(WIDTH, HEIGHT);final Graphics ig = i.getGraphics();


Dann könnte ich in der render-Methode folgendes tun:

Quellcode

1
public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException { ig.fillOval(...); ig.flush(); g.drawImage(i,0,0); }


Aber irgendwie funktioniert es nicht so wie geplant. Entweder habe ich einen schwarzen Bildschirm oder wenn ich das flush() weglasse ein flackerndes Bild mit Inhalten, die da gar nicht reingehören.

Vielleicht kennt sich ja einer von euch besser mit Slick aus und kann mir einen Tipp geben.

Mit freundlichem Gruß:
Marcel Gebhardt