Guten Morgen java-forum Community.
Ich bin gerade dabei, ein kleines Spiel zu programmieren. Zu einem Spiel gehören natürlich immer Grafiken, welche geladen werden. Das gestaltet sich eigentlich als ziemlich einfach, da ich direkt am Anfang die Grafiken laden lasse, so dass zur Laufzeit keine Grafiken mehr geladen werden müssen. Mein Problem liegt nun beim Skalieren der Bilder.
Das Skalieren benötige ich für folgende Fälle:
In einem YAML-Dokument kann man für jedes "Item" im Spiel gewisse Properties sowie auch Höhe/Breite festlegen, und eine Datei angeben, welche die Textur beinhaltet. Falls diese Bild-Datei eine andere Höhe/Breite als die angegebene hat, wird das Bild auf diese Werte skaliert.
Zudem läuft das Spiel im Fullscreen, das heißt, die Hintergrundgrafik muss ebenfalls skaliert werden.
Das Ganze läuft aktuell über
[Java]
img = new ImageIcon(getClass().getResource("gfx/bg1.png")).getImage().getScaledInstance(width, height, Image.SCALE_FAST);
...
...
...
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(img, 0, 0, null);
[/Java]
Mein Problem ist nun, dass für eine kurze Zeit das Bild erst einmal weiß ist, und nach mehreren repaint()-Aufrufen das Bild erst erscheint (da getScaledImage asynchron läuft, sofern ich das richtig verstanden habe).
Nun würde ich gerne wissen, ob ich irgendwie überprüfen kann, wann getScaledImage fertig ist, also wann das Bild fertig skaliert ist, denn es wäre ja am praktischsten, den Frame erst dann auf visible zu setzen, wenn die Grafiken alle fertig geladen sind.
Ich bin gerade dabei, ein kleines Spiel zu programmieren. Zu einem Spiel gehören natürlich immer Grafiken, welche geladen werden. Das gestaltet sich eigentlich als ziemlich einfach, da ich direkt am Anfang die Grafiken laden lasse, so dass zur Laufzeit keine Grafiken mehr geladen werden müssen. Mein Problem liegt nun beim Skalieren der Bilder.
Das Skalieren benötige ich für folgende Fälle:
In einem YAML-Dokument kann man für jedes "Item" im Spiel gewisse Properties sowie auch Höhe/Breite festlegen, und eine Datei angeben, welche die Textur beinhaltet. Falls diese Bild-Datei eine andere Höhe/Breite als die angegebene hat, wird das Bild auf diese Werte skaliert.
Zudem läuft das Spiel im Fullscreen, das heißt, die Hintergrundgrafik muss ebenfalls skaliert werden.
Das Ganze läuft aktuell über
[Java]
img = new ImageIcon(getClass().getResource("gfx/bg1.png")).getImage().getScaledInstance(width, height, Image.SCALE_FAST);
...
...
...
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(img, 0, 0, null);
[/Java]
Mein Problem ist nun, dass für eine kurze Zeit das Bild erst einmal weiß ist, und nach mehreren repaint()-Aufrufen das Bild erst erscheint (da getScaledImage asynchron läuft, sofern ich das richtig verstanden habe).
Nun würde ich gerne wissen, ob ich irgendwie überprüfen kann, wann getScaledImage fertig ist, also wann das Bild fertig skaliert ist, denn es wäre ja am praktischsten, den Frame erst dann auf visible zu setzen, wenn die Grafiken alle fertig geladen sind.