Probleme mit CLS

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

RollingStone

Betreff: Probleme mit CLS

BeitragDi, Dez 18, 2007 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich bin völlig neu im BlitzBasic-Genre und arbeite mich gerade durch ein paar Englische Tutorials durch.

Da ich Perfektionist bin, versuche ich während den Tutorials immer alles zu verstehen und zu lösen. Hänge gerade an folgender Sache:

Code: [AUSKLAPPEN]

Graphics 800,600,0 'Set graphics mode

Local W:Int
W = 1

Repeat
   DrawRect 0,40,W,12' Let's change the width of the box instead
   DrawText "- Please Wait -",0,0
   DrawText "Width = "+W,0,20
   W:+3
   Flip;Cls
   
Until W > 400


Plot 1,1 'Draws a pixel in the top left corner. Try 1,1 too
Plot 500,50 'Draws a pixel at location 400,40, Read: plot at X:400, Y:40

DrawLine 40,40,80,80 ;DrawLine 40,40,40,200

Flip;Cls

WaitKey


Der Schleifendurchlauf funzt und der Ladebalken wird korrekt durchlaufen.
Der Code nach der Schleife soll natürlich nur einmal ausgeführt werden, alles andere wäre Ressourcenverschwendung.

Doch habe nun das Problem, dass wenn ich die Zeichenaufträge per Flip aus dem Buffer zeichnen lasse, die vorherigen Zeichenaufträge (also der Ladebalken!) verschwinden!

Nehme ich jetzt das ";Cls" in der Schleife weg, wird beim zweiten Flip der Ladebalken nicht gelöscht. Ziel also anscheinend erreicht. Problem nur, dass folgende Zeile jetzt ein Problem bringt:

DrawText "Width = "+W,0,20

Der Wert von der Variable W wird während und nach dem Durchlauf nur noch durch weiße Kästchen dargestellt. Man sieht während dem Durchlauf ein weißes Flackern der Buchstaben. Woran liegt denn das? Ganz trivial, dass BM einfach bei der Geschwindigkeit des Schleifendurchlaufs nicht mitkommt?

Gruß
RS

P.S: Wäre nett, wenn man den Thread so stehen lassen könnte. Brauche dann nicht für jede Anfängerfrage einen neuen Thread erstellen. Gewährt die Übersichtlichkeit. Smile
 

Dreamora

BeitragDi, Dez 18, 2007 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du kein CLS machst, wird der Bildschirm nicht gelöscht -> das alte wird überzeichnet -> Bei buchstaben gibts den totalen Salat

Sofern du nicht den gesamten Bildschirm übermalst (zb bei Tile Systemen oder Hintergrundbild), musst du CLS benutzen.

Um den alten Ladebalken zu erhalten musst du ihn in irgend einer Form während der Schleife zeichnen oder alternativ kein CLS und dafür ein schwarzes Recheck über den bereich des Textes malen vor dem Drawtext

EDIT: Künftig bitte sinnvolle Threadtitel nutzen, sonst werden sie, da sie für die Community keinen Nutzen haben, einfach getrasht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

RollingStone

BeitragDi, Dez 18, 2007 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:

Um den alten Ladebalken zu erhalten musst du ihn in irgend einer Form während der Schleife zeichnen


Ja das wird ja bereits gemacht. Siehe Code oben. Wie meinst du das genau?

Zitat:

alternativ kein CLS und dafür ein schwarzes Recheck über den bereich des Textes malen vor dem Drawtext


Ja, verstanden und funktioniert.
 

Dreamora

BeitragDi, Dez 18, 2007 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
RollingStone hat Folgendes geschrieben:
Dreamora hat Folgendes geschrieben:

Um den alten Ladebalken zu erhalten musst du ihn in irgend einer Form während der Schleife zeichnen


Ja das wird ja bereits gemacht. Siehe Code oben. Wie meinst du das genau?


Machst du eben nicht.
Während der Schleife erhöhst du W, zeichnest Text.
Aber der Balken wird nicht gezeichnet zwischen CLS und FLIP, das heisst er existiert danach dann halt auch nimmer.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group