Guillamue06
Messages postés157Date d'inscriptiondimanche 18 avril 2004StatutMembreDernière intervention11 juillet 2022
-
1 avril 2011 à 17:29
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
3 avril 2011 à 12:19
Bonjour à tous,
Je suis en train de développer un mini mario kart avec les composants form windows (pas terrible je sais mais bon...)
J'ai un problème au niveau de l’évènement KeyDown
quand l'on appuis sur la touche Keys.UP le kart avance bien et sur les fleche gauche droite le kart tourne bien mais des que l'on tourne le kart n'avance plus.
Il faut lacher la fleche du haut puis ré-appuyer pour avancer.
Moi je voudrai que lorsque j'appuis sur la fleche du haut pour avancer le kart avance toujours même quant on tourne.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 avril 2011 à 12:13
Salut
Oui, c'est normal, le KeyDown (comme ses frères) ne peuvent retourner qu'une seule touche = la dernière.
Pour connaitre les touches enfoncées en même temps (usage peu classique), il faut scanner les codes de touche par les API comme GetAsyncKeyState
Function GetPressedKey() As String
For Cnt = 32 To 128
'Get the keystate of a specified key
If GetAsyncKeyState(Cnt) <> 0 Then
GetPressedKey = Chr$(Cnt)
Exit For
End If
Next Cnt
End Function
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 avril 2011 à 12:19
Dans ton cas, puisque tu n'as qu'un nombre limité de touches à scruter, tu pourrais créer des fonctions comme ça :
Function IsUpKeyPressed() As Boolean
IsUpKeyPressed = CBool(GetAsyncKeyState(vbKeyUp) <> 0)
End Function
Function IsDownKeyPressed() As Boolean
IsDownKeyPressed = CBool(GetAsyncKeyState(vbKeyDown) <> 0)
End Function