Hallo,
ich habe mit java3D ein Spiel programmiert und wollte das in eine GUI packen, die mir zusätzlich zum eigentlichen 3D-Spielbildschirm auch ein paar Statuswerte anzeigt.
Dazu gehört unter anderem ein Bild (png) der aktuell gezogenen Waffe.
Nun soll natürlich dieses Bild auch wechseln, wenn die Waffe gewechselt wird.
Bisher habe ich dafür die Methode setIcon() genutzt. Die führte aber zu den unschönen Effekt, dass bei Bildänderung die ganze GUI (also auch mein 3D-Spielbildschirm) kurz flackert (hätte nur das Panel, welches das waffen.png enthällt geflackert wäre das kein Problem).
Ich nehme stark an, das Flackern kommt dadurch zu stande, dass setIcon() auch repaint() aufruft, sicher bin ich mir aber nicht.
Ich habe jetzt nach Alternativlösungen gesucht. Die einzige Idee, die mir soweit gekommen ist, war mehrere Panels von vorneherein mit den Bildern auszustatten und dann während der Laufzeit bei Bedarf einfach das aktuelle Panel aus der GUI zu löschen und durch das mit dem korekkten Bild zu ersetzen.
Das hat aber so richtig auch nciht funktioniert...
Hat von euch vllt jemand eine andere Idee wie ich das umsetzen könnte?
Für jegliche Hilfe wie immer vielen Dank im Vorraus.
ich habe mit java3D ein Spiel programmiert und wollte das in eine GUI packen, die mir zusätzlich zum eigentlichen 3D-Spielbildschirm auch ein paar Statuswerte anzeigt.
Dazu gehört unter anderem ein Bild (png) der aktuell gezogenen Waffe.
Nun soll natürlich dieses Bild auch wechseln, wenn die Waffe gewechselt wird.
Bisher habe ich dafür die Methode setIcon() genutzt. Die führte aber zu den unschönen Effekt, dass bei Bildänderung die ganze GUI (also auch mein 3D-Spielbildschirm) kurz flackert (hätte nur das Panel, welches das waffen.png enthällt geflackert wäre das kein Problem).
Ich nehme stark an, das Flackern kommt dadurch zu stande, dass setIcon() auch repaint() aufruft, sicher bin ich mir aber nicht.
Ich habe jetzt nach Alternativlösungen gesucht. Die einzige Idee, die mir soweit gekommen ist, war mehrere Panels von vorneherein mit den Bildern auszustatten und dann während der Laufzeit bei Bedarf einfach das aktuelle Panel aus der GUI zu löschen und durch das mit dem korekkten Bild zu ersetzen.
Das hat aber so richtig auch nciht funktioniert...
Hat von euch vllt jemand eine andere Idee wie ich das umsetzen könnte?
Für jegliche Hilfe wie immer vielen Dank im Vorraus.