Einzelnen Beitrag anzeigen

Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

Flackern beim Aufbau eines Spielfeldes verhindern

  Alt 14. Mär 2010, 12:54
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
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat