GameInput.
Entrée clavier
La méthode GetKeyState récupère le code de balayage et les données de touche virtuelle pour chaque touche enfoncée d’un clavier. Ces données d’entrée sont ensuite retournées sous forme de tableau de longueur variable de structures GameInputKeyState. Une touche enfoncée est une touche maintenue au moment où le clavier a signalé une entrée. Les claviers varient quant à la fréquence à laquelle ils signalent les entrées, généralement de 125 Hz à 1 000 Hz. L’état du clavier est signalé séparément pour chaque clavier connecté au système. L’état rudimentaire du clavier est destiné à associer l’entrée clavier à des actions de jeu, comme le déplacement ou le tir d’une arme. Il n’est pas destiné à la saisie de texte normale ni aux autres API utilisées à cette fin.Lecture de l’état des touches
Utilisez le code suivant pour implémenterGameInput pour les claviers et les souris dans votre titre.
stateArray passé à GetKeyState est plus grand que le nombre de touches enfoncées, les éléments excédentaires du tableau ne sont ni écrits ni mis à zéro. À l’inverse, si stateArray est plus petit que le nombre de touches enfoncées, le tableau est rempli et les touches enfoncées excédentaires sont ignorées.
GetKeyCount permet de garder une petite taille maximale de tableau. La taille maximale peut être interrogée au moyen de l’interface IGameInputDevice.
Notez que le membre codePoint spécifie le glyphe que le système croit être imprimé sur la touche associée, selon la disposition de clavier actuelle. Il est destiné à afficher une représentation de la touche dans une interface de mappage des entrées, et non à créer des chaînes de saisie de texte.
Entrée souris
La méthode GetMouseState récupère l’état de déplacement et des boutons d’une souris, qui est retourné dans une seule structure GameInputMouseState, comme le montre le code suivant. Comme l’état du clavier, l’état de la souris est signalé séparément pour chaque souris connectée au système. <!—As with keyboard input, the CreateAggregateDevice method on theIGameInput interface is used to get the combined system mouse state.> —>
Lecture des déplacements de la souris
Le déplacement de la souris est signalé de façon native sous forme d’une série de valeurs delta, plutôt que sous forme de position absolue. Cela n’est pas compatible avec la nature d’interrogation deGetCurrentReading, car demander périodiquement la lecture actuelle de la souris risque de manquer plusieurs deltas intermédiaires.
Plutôt que d’utiliser GetNextReading pour parcourir potentiellement des dizaines de lectures historiques de la souris et additionner les deltas, ceux-ci sont cumulés dans des valeurs virtuelles positionX et positionY. À partir de là, les deltas sont calculés en soustrayant les valeurs positionX et positionY des lectures précédentes obtenues. Les deltas individuels sont accessibles en parcourant toutes les lectures intermédiaires, ou au moyen des deltas cumulés lorsque des lectures intermédiaires ont été ignorées.
Les valeurs positionX et positionY correspondent à la somme de tous les deltas de déplacement. Ces valeurs n’ont aucune corrélation avec les coordonnées de l’espace écran. La valeur delta cumulée ne concerne que les événements de souris qu’un processus reçoit lorsqu’il a le focus d’entrée.
