ich stecke gerade in den anfängen eines kleinen Flugzeugspiels.
Inzwischen können meine flieger am himmel umherfliegen usw. das klappt schon alles ganz ok.
allerdings flackert das Iconimage.
Noch schlimmer wird es, wenn ich ein 2. objekt neu zeichne / bewege / wasauchimmer. Dann flimmert nämlich der gesamte bereich zwischen den beiden objekten mit ;()
Das Spielfeld ist ein AWT Dialog, auf dem 4 JLables sind (ja, JLable). in die JLables adde ich die bilder der Flugzeuge.
das neu zeichnen / bewegen der flugzeuge läuft über einen Thread, der die koords der JLables erändert:
ich habe nun schon einiges über double buffering gelesen, jedoch noch nie in zusammenhang mit ImageIcons.
Was genau muss nun ge"buffered" werden? einfach mit .setDoubleBuffered(true)?
wenn ich nur die Jlables mit doppelpufferung ausstatte, dann bekomme ich als bonus eigenartige grafikfehler: der transparente hintergrund der flugzeuge schleppt hintergrundgrafiken aus meiner landschaft mit usw.
Wer das mal ersuchen möchte, weil eigeninteresse besteht, der kann gerne meinen bisherigen code haben. so viel isses noch ned
Inzwischen können meine flieger am himmel umherfliegen usw. das klappt schon alles ganz ok.
allerdings flackert das Iconimage.
Noch schlimmer wird es, wenn ich ein 2. objekt neu zeichne / bewege / wasauchimmer. Dann flimmert nämlich der gesamte bereich zwischen den beiden objekten mit ;()
Das Spielfeld ist ein AWT Dialog, auf dem 4 JLables sind (ja, JLable). in die JLables adde ich die bilder der Flugzeuge.
Code:
private ImageIcon Iconbl;
private ImageIcon Iconro;
private ImageIcon Iconge;
private ImageIcon Icongr;
Iconro = new ImageIcon(Flieger[0].getImg());
Iconro.setDescription(Flieger[0].getImg());
Iconbl = new ImageIcon(Flieger[1].getImg());
Iconbl.setDescription(Flieger[1].getImg());
Iconge = new ImageIcon(Flieger[2].getImg());
Iconge.setDescription(Flieger[2].getImg());
Icongr = new ImageIcon(Flieger[3].getImg());
Iconge.setDescription(Flieger[3].getImg());
rot.setIcon(Iconro);
blau.setIcon(Iconbl);
gelb.setIcon(Iconge);
gruen.setIcon(Icongr);
das neu zeichnen / bewegen der flugzeuge läuft über einen Thread, der die koords der JLables erändert:
Code:
if((Iconro.getDescription()!= Flieger[id].getImg())||(absturz == true)){
Iconro.setDescription(Flieger[id].getImg());
rot.setIcon(new ImageIcon(Flieger[id].getImg()));
}
rot.setBounds(Flieger[0].getPosX(), Flieger[0].getPosY(), 60, 60);
ich habe nun schon einiges über double buffering gelesen, jedoch noch nie in zusammenhang mit ImageIcons.
Was genau muss nun ge"buffered" werden? einfach mit .setDoubleBuffered(true)?
wenn ich nur die Jlables mit doppelpufferung ausstatte, dann bekomme ich als bonus eigenartige grafikfehler: der transparente hintergrund der flugzeuge schleppt hintergrundgrafiken aus meiner landschaft mit usw.
Wer das mal ersuchen möchte, weil eigeninteresse besteht, der kann gerne meinen bisherigen code haben. so viel isses noch ned