Code archives/User Input/4 key states (Up/Idle, ToDown/Pressed, Down/Held, ToUp/Released)
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
This demonstrates how to get 4 different states for each key instead of the default 3 (up, hit, down) | |||||
;4 key states (Up/Idle, ToDown/Pressed, Down/Held, ToUp/Released) ;This demonstrates how to get 4 different states for each key instead of the default 3 (up, hit, down) ;i have coded my own keys/input system using this, but this is just a simple example so that you can understand the concept and add it to your own keys/input system... Graphics3D(640,480,32,2) SeedRnd(MilliSecs()) ;for each key you need to have these globals in order to store the state of the key, or you can create arrays and have a constant for each key which corresponds to its index in the array... Global KeySpaceState% Global KeySpacePrevState% Global KeySpaceDownCount% Const CUp% = 1 ;Idle Const CToDown% = 2 ;Pressed Const CDown% = 3 ;Held Const CToUp% = 4 ;Released Global Timer = CreateTimer(10) While(KeyDown(1)<>1) GetInput() ;SetBuffer(BackBuffer()) ;ClsColor(000,000,000) ;Cls() ;Locate(0,0) If( KeySpaceState = CUp ) Print("Up/Idle") ElseIf( KeySpaceState = CToDown ) Print("ToDown/Pressed") ElseIf( KeySpaceState = CDown ) Print("Down/Held") ElseIf( KeySpaceState = CToUp ) Print("ToUp/Released") EndIf WaitTimer(Timer) VWait():Flip() Wend End() Function GetInput() KeySpaceState = CUp If( KeyDown(57)=1 ) KeySpaceDownCount = KeySpaceDownCount + 1 If( KeySpaceDownCount = 1 ) KeySpaceState = CToDown KeySpacePrevState = CToDown ElseIf( KeySpaceDownCount > 1 ) KeySpaceState = CDown KeySpacePrevState = CDown EndIf ElseIf( KeyDown(57)=0 ) KeySpaceDownCount = 0 If( KeySpacePrevState = CToDown Or KeySpacePrevState = CDown ) KeySpaceState = CToUp KeySpacePrevState = CToUp EndIf EndIf ;DebugLog("KeySpaceState = "+KeySpaceState) End Function |
Comments
None.
Code Archives Forum