Hallo Gemeinde!
Ich schon wieder...
Ich bastle (noch immer) an einem kleinen Memory-Game. Soweit funktionert auch alles bestens -- nun habe ich aber bei genauern Hinsehen entdeckt, dass wenn ich das Spielfeld (6 x 6 Karten -- Rückseite ist mit einem einhetlichem BMP versehen) erstmalig aufbaue, es doch mächtig flackert. D.h. ich gebe die Karten Spaltenweise aus und dabei flackern die bereits gezeichneten Karten umsomehr je mehr Karten sichtbar werden.
Ich habe es mal mit "Doublebuffered := TRUE" für jede Karte versucht -- und da wurde es nur noch schlimmer.
Hier ein Auszug aus der Container-Klasse, die alle Spielkarten mit den Bildern versieht, und am Anfang auf dem Monitor zeichnet:
Delphi-Quellcode:
PROCEDURE TSpielFeld.InitSpielFeld;
...
BEGIN
Bild := TBitmap.CREATE;
FOR i := 0 to FAnzSpielkarten - 1 DO
BEGIN
Karte := TSpielkarte.CREATE(NIL);
Karte.Init(FParent, FKartenKantenLaenge);
... // X-Y-Pos für jede Karte bestimmen
Bild.Assign(nil);
FBilderliste.GetBitmap(0, Bild);
Karte.FRueckBild.Assign(Bild); // Jede Spielkarte mit einem einheitlichem "Rückenbild" versehen
Karte.FImage.Picture.Bitmap.Assign(Bild);
Bild.Assign(nil); // Das Image jeder Spielkarte zeigt das entsp. BMP an
// Am Anfang ist das nun mal das "Rückenbild"
... // Den Werte jeder Karte bestimmen
FBilderliste.GetBitmap(Karte.Wert, Bild);
Karte.FSpielBild.Assign(Bild); // Jede Spielkarte mit einem "SpielBild" versehen
Bild.Assign(nil);
Add(Karte);
END;// FOR i := 0 to FAnzSpielkarten
Bild.FREE;
END;
Habt ihr eine Idee, wie man das eleganter, d.h. ohne Flackern hinbekommt? D.h. alle Spielkarten auf einmal darstellt, statt wie hier, zwar recht schnell, aber doch eben sequentiell -- wodruch der Flacker-Effekt vermutlich auch entsteht.
Danke im voraus
Gruß
Jazzman