Pause
Übersicht

RetroBetreff: Pause |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
If KeyHit(25) Then
WaitKey() EndIf Warum wird das ignoriert? |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mach mal ein FlushKeys() vor das Waitkey, vielleicht hilft das. | ||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
?? 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() cu Linux |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() cu Linux |
||
furbolg |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Komischerweise braucht man bei KeyHit auch noch einen Scancode... | ||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
EDIT:doppelpost | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group