Flickering
Auf meinem Notebook habe ich ein Flackern (Flickering) bei der Anzeige festgestellt. Das sieht nicht besonders gut aus. Um das Flickering bei der Anzeige zu korrigieren muss die Klasse Ground verbessert werden. Die Ausgabe wird in einen Buffer geschrieben und erst nachdem alles gezeichnet wurde, wird der Buffer in die Ausgabe kopiert.
public class Ground extends Canvas {
private static final long serialVersionUID = 1L;
private Image backBuffer;
private Graphics bBG;
...
public void update( Graphics g ) {
paint( g );
}
/**
* Strecke und Fahrzeuge zeichnen
*/
public void paint(Graphics g) {
// Einen Buffer für die Ausgabe erstellen sofern er nicht vorhanden ist
if( backBuffer == null ) {
backBuffer = createImage( getWidth(), getHeight() );
bBG = backBuffer.getGraphics();
}
// Die Strecke in den Buffer zeichnen
if (img != null) bBG.drawImage(img, 0, 0, this);
// Die Fahrzeuge in den Buffer zeichnen
if (this.raceCar != null) {
for (int i=0; i<this.raceCar.length; i++) this.raceCar[i].paintIt(bBG);
}
// Die Zeichenfläche löschen
g.clearRect(0, 0, img.getWidth(), img.getHeight());
// und den Buffer zeichnen
g.drawImage( backBuffer, 0, 0, this );
}
}
Kommentare
Kommentar veröffentlichen