Flackernde Bilder im VB "Spiel"

FlorianR

Erfahrenes Mitglied
Hallo alle zusammen,

Ich versuche momentan ein Spiel ( 2D ) in Visual Basic 6 zu programmieren.
Ich habe es bereits geschafft eine Figur einzubinden die sich beim drücken der Pfeiltasten bewegt. Es werden immer neue Bilder eingespielt um eine Simulation der Figur zu ermöglichen. Die Figur ist auf einem Hintergrund und lässt sich ohne Probleme in alle Richtungen bewegen. Mein Problem ist nun aber, dass die Figur sehr stark "flackert", dass bedeutet, immer wenn ich die Pfeiltasten betätige und sich die figur in die gewünschte Richtung bewegt, flackert das Bild - inspesondere der transparente Hitergrund der .gif Datei ( 100x100 Pixel ). Kann mir jemand helfen, oder gehe ich so ein Projekt völlig falsch an ?

cheers,
Florian
 
Versuchs mal mit DoubleBuffering, das eliminiert flackern von Bildern.
Das funktioniert so:
Du zeichnest jeden Frame erst in einen nicht sichtbaren Bereich und wenn er fertig gezeichnet ist kopierst du ihn auf den sichtbaren Ausgabebereich.
 
Die einzelnen Frames der Figur habe ich ja in einem nicht sichtbaren Bereich, die dann beim drücken der Pfeiltasten aufgerufen werden ( in einer bestimmten Reihenfolge ). Doch dabei passiert dieses flackern...
 
Nein nicht nur die Figur, sondern den gesamten Frame. Du brauchst einen versteckten Bereich der so groß ist wie der Ausgabebereich.
Dann machst du folgendes:
- Hintergrund in diesen "Puffer" zeichnen
- sonstige Elemente aus dem Spiel (auch die Figur) auf den Puffer zeichnen
- wenn alles komplett ist, und wirklich erst dann, den gesamten Puffer auf einmal auf den sichtbaren Bereich kopieren.

Dann wird der ganze Frame auf einmal aktualisiert und der Flimmereffekt ist weg.

Das Flimmern entsteht so:
Bei jedem Frame wird z.b. der Hintergrund neu gezeichnet, der Spieler sieht diesen also kurz "blank". Darauf wird dann die Spielfigur gezeichnet, was der Spieler ebenfalls sieht.
Es ist also immer kurz nur der Hintergrund und der Hintergrund mit Spielfigur zu sehen, dadurch sieht es aus als ob die Spielfigur schnell blinkt.

/Edit:
Auf www.vb-fun.de gibts unter "Tutorials" einen Spielekurs für VB in dem diese Technik anhand von Beispielen gut erklärt wird.
 
Zuletzt bearbeitet:
Danke! ich werde demnächst alles ausprobieren und ich denke, dass ich das schaffen werde :)

cheers,
florian
 
ich bin zwar nicht so mit VB vertraut, aber da es Delphi ähnelt gehe ich mal davon aus, dass es auch hier einen "doublebuffered" befehl gibt. Musst du mal gucken, dann musst du das nicht alles manuell ausführen, sondern er macht das automatisch!

greetz

pade
 
Zurück