Sporadische Events von Keyboardreleased

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Schon gesehen. :mrgreen:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Yo, funzt gut, mit Ausnahme, das zweimal abgefragt wird, on zaehler kleiner als Zahl_min ist. Ist so falsch.

Habe aber auch voll die Blockade grade.

Edit: Merke grade, dass bei jeder eyabfrage der gleiche Code ist.

Ändere ihn grade, aber irgendwo hakts da.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Code: Alles auswählen

; Autor: DarkDragon

Dim StaticKeyboardReleasedOldState.b(256)

Procedure KeyboardReleasedEx(Key.l)
  Protected Result.l
  Shared StaticKeyboardReleasedOldState()
  
  ; Key+1 in der Struktur, weil #PB_Key_All = -1 ist
  Result = 0
  
  If KeyboardPushed(Key)
    StaticKeyboardReleasedOldState(Key+1) = 1
  Else
    If StaticKeyboardReleasedOldState(Key+1) = 1
      Result = 1
      StaticKeyboardReleasedOldState(Key+1) = 0
    EndIf
  EndIf
  
  ProcedureReturn Result
EndProcedure

InitSprite()
InitKeyboard()

OpenWindow(0, 0, 0, 640, 480, "Test", #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 1, 0, 0)

Repeat
  ExamineKeyboard()
  Delay(1)
Until KeyboardReleasedEx(#PB_Key_Up) Or WindowEvent() = #PB_Event_CloseWindow
MessageRequester("OK", "OK")
End
Auch wenn ich ein wenig spät damit komm <)
Zuletzt geändert von DarkDragon am 26.09.2006 20:15, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Merke grade, dass bei jeder eyabfrage der gleiche Code ist.

:oops: yo, habbich verdaddelt..

...hatte rübergepatcht und nur das flag geändert.

habs jetzt oben korrigiert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

@DarkDragon
ich glaub das letzte

Code: Alles auswählen

StaticKeyboardReleasedOldState(Key+1) = 1
müsste so:

Code: Alles auswählen

StaticKeyboardReleasedOldState(Key+1) = 0
sein, weil sonst ist die taste ja dauerhaft gedrückt.
PureBasic 4.40 (Windows - x86)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

tobe hat geschrieben:@DarkDragon
ich glaub das letzte

Code: Alles auswählen

StaticKeyboardReleasedOldState(Key+1) = 1
müsste so:

Code: Alles auswählen

StaticKeyboardReleasedOldState(Key+1) = 0
sein, weil sonst ist die taste ja dauerhaft gedrückt.
Stimmt...
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten