Das Spiel des Lebens - Changelog für Version 0.2
Von Version 0.1 auf 0.2 sind folgende Funktionen hinzugekommen:
- Mausunterstützung: Es ist nun möglich, mit der Maus ein Muster zu "malen"
- Doppelpufferung: Bei der Version 0.1 konnte man ein starkes Flimmern auf dem Bildschirm sehen, wenn
man schnell hintereindander den "next Generation" Button geklickt hat.
Nun verwende ich Doppelpufferung, d.h. Bevor das "neue" Bild angezeigt wird, wird es im
Hintergrund gemalt und dann in einem Rutsch auf dem Bildschirm angezeigt.
Die Doppelpufferung erreicht man dadurch, dass man
die update()-Methode der Klasse LifeCanvas (geerbt von Component) überschreibt. Die update()-Methode
tut normalerweise nichts anderes als paint(g) aufzurufen. Die überschriebene update()-Methode erzeugt
jedoch zunächst ein Image-Objekt, dessen Größe genau auf die Größe des LifeCanvas gesetzt wird. Anschließend wird
die paint()-Methode des LifeCanvas aufgerufen, jedoch bekommt sie als Parameter nicht den "normalen"
Grafikkontext g, sondern den des Image übergeben. So malt die paint()-Methode das neue Bild in das
Image-Objekt. Anschließend wird das Image mittels g.drawImage() auf den sichtbaren Grafikkontext
übertragen. Wer sich für diese Technik interessiert möge einen kurzen Blick auf den
Quelltext (Klasse
LifeCanvas.java) werfen. Ich glabe das wird eh erst richtig klar wenn man den Quelltext gesehen hat.