Pause

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Retro

Betreff: Pause

BeitragMo, Jul 05, 2004 5:42
Antworten mit Zitat
Benutzer-Profile anzeigen
If KeyHit(25) Then
WaitKey()
EndIf

Warum wird das ignoriert?
 

Edlothiol

BeitragMo, Jul 05, 2004 7:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach mal ein FlushKeys() vor das Waitkey, vielleicht hilft das.

Abrexxes

BeitragMo, Jul 05, 2004 8:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kann net gehen,Waitkey wird nur solange ausgeführt wie Eine Taste gedrückt bleibt oder bei Keyhit nur einen Durchgang lang.

Hier hilft eine Variable die deinen Wusch zur Pausen speichert.
Code: [AUSKLAPPEN]

If KeyHit(25) Then stop=1

     If stop=1 then
       cls
         Text ,100,100 "Pause,bitte Taste zum Vorfahren drücken"
        Flip
       WaitKey()
     EndIf

Stop=0


das sollte gehen.

Text und cls/flip habe ich nur eingesetzt un zu zeigen was so möglcih ist,läst du CLS weg bleibt auch aktueller Bildinhalt erhalten.
Stelle sicher das das ganze auch in deinem Code an der Richtigen stelle steht,zb in der Hauptschleife vor dem FLIP Befehl!
-Nicht getestet-
  • Zuletzt bearbeitet von Abrexxes am Mo, Jul 05, 2004 8:59, insgesamt einmal bearbeitet
 

Dreamora

BeitragMo, Jul 05, 2004 8:58
Antworten mit Zitat
Benutzer-Profile anzeigen
?? hast du waitkey mit keydown verwechselt linux?

waitkey sollte normalerweise das programm anhalten bis eine taste gedrückt wird. da aber keyhit relativ kurz is und meistens mehr als 1 ausgelöst wird, muss man danach keyboardflush nutzen, damit es auch sicher danach stehen bleibt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Abrexxes

BeitragMo, Jul 05, 2004 9:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora.


Ich hatte öfters Problem mit direkten Keyhit Commandos,eine Variable hält den Keyhit dauerhaft fest bis die IF THEN erfüllt ist.

Ausserdem könnte ich nun im Code die Pause jederzeit aufruffen,ich muss nur den Wert stop da wo ich ihn will auf 1 setzen ,auch ohne Tastendruck Wink

cu Linux
 

Dreamora

BeitragMo, Jul 05, 2004 9:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Jopp der Teil mit dem Code war klar. Aber deine Erklärung davor erzeugt mehr verwirrung als das sie hilft weil du 2 unabhängige themen vermischst. Find ich zumindest.

Wie gesagt, mit nem Flush nach dem keyhit is das problem normalerweise gelöst, wie oben beschrieben.
Bzw. mit nem langsamen pc der net so schnell wieder die tasten überprüfen kann *ggg*
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Abrexxes

BeitragMo, Jul 05, 2004 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
lol

Ja,in der Tat.Schnell darf der PC net sein *gröhl*

Ich habe bei meinem aktuellen Code das ganze so gemacht das der Spieler mit "P" Pausen kann und diese mit "Leertaste" aufhebt,so stellt sich das Problem erst nicht.Ein andermal (bei einer Sprungroutine) habe ich die Taste nach einmaligem Benutzen gesperrt und erst freigegeben wenn diese wieder losgelassen wurde.(Keyhit (?) = 0) So ist Flushkey unnötig (Sollte der Spieler während dem Springen noch was erledigen müssen wäre das nämlich hinderlich da alle Tasten gelöscht werden.

An meinem Erklärungsstyle muss ich woll noch arbeiten. Wink

cu Linux
 

furbolg

BeitragMo, Jul 05, 2004 12:53
Antworten mit Zitat
Benutzer-Profile anzeigen
function KeyHit2()
newkey = Keyhit()
if newkey > oldkey then
oldkey = newkey
return true
end if
end function

Is kleiner Helfer von mir, gleiches für Mouse hit, man kann auch die Flush teile nutzen Wink
 

Edlothiol

BeitragMo, Jul 05, 2004 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Komischerweise braucht man bei KeyHit auch noch einen Scancode...

Markus2

BeitragMo, Jul 05, 2004 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das FlushKeys klappt ganz gut aber hier noch mal ne
Alternative die nicht gleich das ganze Programm zum stehen
bringt .

If KeyHit(25)>0 Then pause=1-pause

if pause=1 then
;nix machen oder lustige Effekte zeigen
else
;machen
endif

Markus2

BeitragMo, Jul 05, 2004 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
EDIT:doppelpost

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jul 05, 2004 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
also habe das mal so gemacht und da geht es ohne probleme
Code: [AUSKLAPPEN]

If KeyHit ( 25) 
While Not KeyHit (25) 
Wend
endif   


und zum Testen:
Code: [AUSKLAPPEN]
Graphics 640,480
Dim FPS(3)
SetBuffer BackBuffer()
While Not KeyDown(1);#####

If KeyHit ( 25)
   While Not KeyHit (25)
      Text 200,200, "PAUSE"
      Flip
   Wend
End If

Text 9,9,"FPS:"+FPS(1):FPS(2)=FPS(2)+1:If MilliSecs()>FPS(3)+999 Then FPS(1)=FPS(2):FPS(2)=0:FPS(3)=MilliSecs()
;WaitTimer (FPS(0))
Flip:Cls:Wend:End ;#########


aber um sicher zu gehen Flushkeys() einbauen
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group