Benutzereingabe und Programmweiterlauf

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

FreeFred

Betreff: Benutzereingabe und Programmweiterlauf

BeitragMo, Jun 13, 2005 0:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
kann mir jemand sagen, warum nach dem KeyWait() das nächste Rechteck nicht dargestellt wird?!

BlitzBasic: [AUSKLAPPEN]
Graphics 800, 600, 16, 3
Color 255, 0, 0
Rect 100, 100, 100, 100
taste = KeyWait()
Rect 300, 200, 100, 100
Repeat
Until WaitEvent () = $803
End


Das Programm wird nach dem KeyWait() fortgesetzt, wenn ich eine Taste drücke (da ich dann erst schließen kann). Das 2. Rechteck erscheint aber nicht...
 

Omenaton_2

BeitragMo, Jun 13, 2005 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht was noch in dem Code drin ist, was du nicht in dem Beispiel in deinem Beitrag reinkopiert hast.

Ich kann deinen Code auch nicht bei mir laufen lasse, ich habe Blitz3D und da geht das so gar nicht.

Ich möchte nur auf eine mögliche "Fehlerursache" aufmerksam machen.

Das erste Rechteck wird am Anfang gezeichnet und bleibt lange sichtbar da, solange, bis jemand die Taster drückt.
Das 2. Rechteck wird erst gezeichnet, wenn die Taste gedrückt wurde. Dann nach der Zeichnung endet das Programm eine Millisekunde später. Der Betrachter hat also gar keine Zeit, den 2. Rechteck wahrzunehmen.
Manchmal ist es so, daß zwar alles richtig dargestellt wird, nur wird ein Teil zu kurz angezeigt oder gar überschrieben.

Mein Tipp: Bei solchen Fehler die du hast, immer auf diese Möglichkeit achten.

Ebola33

BeitragMo, Jun 13, 2005 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
das ist ja interessant. Bei mir (B3D) funktioniert Keywait() gar nicht Shocked
Wieder was dazu gelernt.

Benutze einfach getkeys.

bye
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 13, 2005 10:43
Antworten mit Zitat
Benutzer-Profile anzeigen
da es Bplus ist, gehts auch mit keywait(), ist identisch mit waitkey!

von deinen Rects dürfte keins zu sehen sein,
da BPlus automatsich den Bachbuffer() aktiviert und alles da rein zeichnet!
Ohne Flip wird das nichts!

Funktionieren sollte es aber wenn du es so schreibst!


BlitzBasic: [AUSKLAPPEN]
Graphics 800, 600, 16, 2 
Color 255, 0, 0
Rect 100, 100, 100, 100

taste = KeyWait()
Rect 300, 200, 100, 100
Flip
While Not KeyHit(1) ; mit Waitevent geht es nicht im GrafikFenster
Wend
[BB2D | BB3D | BB+]

simi

BeitragMo, Jun 13, 2005 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
er benutzt B+, darum gehen die Befehle bei euch nicht.....

Das Problem ist, dass bei B+ schon immer Standardmässig der Backbuffer initialisert ist, deshalb musst du noch Flip benützen.....

Sonst würde ich nicht KeyWait sondern ql:WaitKey benutzen, das ist eigentlich der Standardbefehl Wink

Am schluss wartest du auf den Event $803..... - Das geht aber nur mit GUI-Fenstern (mit ql:CreateWindow erstellt), deshalb ist dein Programm am Schluss in einer Endlosschleife.....

cu simi

//edit: ein bisschen zu spät Sad
 

FreeFred

BeitragMo, Jun 13, 2005 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Omenaton_2

das ist der ganze code, sonst gibts nix.
wenn du statt keywait waitkey nimmst, gehts auch unter blitz3d.
nach der betätigung der taste endet das prog nicht - es wird wieder auf eine eingabe gewartet.

@ Rallimen

das erste rect ist aber immer zu sehen, egal wie ich es modifiziere.
mit FLIP funktioniert das ganze aber Razz
wenn b+ standardmäßig den backbuffer aktiviert, ist es irgendwie merkwürdig, dass immer alle rects gezeichnet werden, wenn ich waitkey nicht verwende. wenn ich stattdessen eine schleife baue, die viele rects zeichnet, werden alle dargestellt. Shocked

@ simi

ja, natürlich Embarassed solche events gibts nur bei der gui.
an der endlosschleife kanns aber nicht liegen - denn die ist ja gewollt und funktioniert auch nicht nur hier, sondern auch an anderer stelle.

@ me

irgendwie gelingt es bei b+ manchmal einfach so, objekte darzustellen, ohne dass der backbuffer verwendet wird, und manchmal eben nicht. dann sollte man einfach FLIP verwenden - und schon funxts...

@ all

thnx Very Happy

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 13, 2005 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
das liegt an deinem Fenstermodus, da Windows das zum teil steuert!
Wenn das ganze im Vollbild läuft (Graphics 800, 600, 16, 1)siehst du erst was wenn Space gedrückt wird!
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group