Hallo @ all
Ich programmiere gerade ein SPiel aber da das Problem ehr mit der Logik zusammenhängt schreibe ich es mal hier rein. Ich habe mir folgende Funktion geschrieben:
Spoiler anzeigen
Diese rufe ich jetzt zweimal hintereinander auf:
KeyState ist ein ganz normales Enum von mir. Bei dem ersten aufruf klappt das ganze auch noch wunderbar. Beim zweiten (mit der Rechten Taste) funktioniert es nicht mehr. Keine Reaktion - der Rückgabewert ist immer Up. Bei Left geht es weiterhin ohne Probleme (das ganze läuft in einer Endlosschleife). Wenn ich die Abfragen tausche funktioniert immer nur die erste. Woran liegt das?
Hoffe ihr könnt mir helfen. Viele Grüße
Croasider
Ich programmiere gerade ein SPiel aber da das Problem ehr mit der Logik zusammenhängt schreibe ich es mal hier rein. Ich habe mir folgende Funktion geschrieben:
VB.NET-Quellcode
- Private Function GetKeyState(ByVal time As GameTime, ByVal key As Keys) As KeyState
- Static Dim oldState As New KeyboardState
- Static Dim oldTime As Double
- Dim state As New KeyState
- If Keyboard.GetState.IsKeyUp(key) Then
- state = KeyState.Up
- oldTime = time.TotalGameTime.TotalMilliseconds
- ElseIf Keyboard.GetState.IsKeyDown(key) AndAlso oldState.IsKeyUp(key) Then
- state = KeyState.Down
- oldTime = time.TotalGameTime.TotalMilliseconds
- ElseIf oldTime + 400 < time.TotalGameTime.TotalMilliseconds Then
- state = KeyState.Pressed
- Else
- state = Nothing
- End If
- If state.ToString <> "Up" Then
- Debug.Print(state.ToString)
- End If
- oldState = Keyboard.GetState
- Return state
- End Function
Diese rufe ich jetzt zweimal hintereinander auf:
KeyState ist ein ganz normales Enum von mir. Bei dem ersten aufruf klappt das ganze auch noch wunderbar. Beim zweiten (mit der Rechten Taste) funktioniert es nicht mehr. Keine Reaktion - der Rückgabewert ist immer Up. Bei Left geht es weiterhin ohne Probleme (das ganze läuft in einer Endlosschleife). Wenn ich die Abfragen tausche funktioniert immer nur die erste. Woran liegt das?
Hoffe ihr könnt mir helfen. Viele Grüße
Croasider