Stick arcadeArcade stick

Cet article explique les notions de base de la programmation pour les sticks arcade Xbox One avec l’API Windows.Gaming.Input.ArcadeStick et les API associées pour la plateforme Windows universelle (UWP).This page describes the basics of programming for Xbox One arcade sticks using Windows.Gaming.Input.ArcadeStick and related APIs for the Universal Windows Platform (UWP).

Voici ce que vous allez apprendre à la lecture de cet article :By reading this page, you'll learn:

  • Obtenir une liste des sticks arcade connectés et de leurs utilisateurshow to gather a list of connected arcade sticks and their users
  • Détecter l’ajout ou la suppression d’un stick arcadehow to detect that an arcade stick has been added or removed
  • Lire les entrées provenant d’un ou de plusieurs sticks arcadehow to read input from one or more arcade sticks
  • comportement des cartes d’arcade comme des appareils de navigation de l’interface utilisateurhow arcade sticks behave as UI navigation devices

Vue d’ensemble des sticks arcadeArcade stick overview

Les sticks arcade sont des périphériques d’entrée appréciés pour leur capacité à reproduire la sensation des machines d’arcade autonomes et pour leurs contrôles numériques de haute précision.Arcade sticks are input devices valued for reproducing the feel of stand-up arcade machines and for their high-precision digital controls. Les sticks arcade constituent le périphérique d’entrée parfait pour les combats tête à tête ou d’autres jeux de type arcade. Ils conviennent à tous les jeux qui fonctionnent bien avec des contrôles entièrement numériques.Arcade sticks are the perfect input device for head-to-head-fighting and other arcade-style games, and are suitable for any game that works well with all-digital controls. Les sticks arcade sont pris en charge dans les applications UWP Windows 10 et Xbox One par l’espace de noms Windows.Gaming.Input.Arcade sticks are supported in Windows 10 and Xbox One UWP apps by the Windows.Gaming.Input namespace.

Xbox One arcade sont équipés d’une manette de jeu numérique à 8 voies, de six boutons d' action (représentés par a1-a6 dans l’image ci-dessous) et de deux boutons spéciaux (représentés par S1 et S2). Il s’agit de périphériques d’entrée numériques qui ne prennent pas en charge les contrôles ou les vibrations analogiques.Xbox One arcade sticks are equipped with an 8-way digital joystick, six Action buttons (represented as A1-A6 in the image below), and two Special buttons (represented as S1 and S2); they're all-digital input devices that don't support analog controls or vibration. Xbox One arcade est également équipé de boutons de visualisation et de menu utilisés pour prendre en charge la navigation dans l’interface utilisateur, mais ils ne sont pas destinés à prendre en charge les commandes de jeu et ne peuvent pas être facilement accessibles en tant que boutons de manette de jeu.Xbox One arcade sticks are also equipped with View and Menu buttons used to support UI navigation but they're not intended to support gameplay commands and can't be readily accessed as joystick buttons.

Un manche d’arcade avec manette à 4 directions, 6 boutons d’action (a1-a6) et 2 boutons spéciaux (S1 et S2)

Navigation d’interface utilisateurUI navigation

Pour faciliter la prise en charge de nombreux périphériques d’entrée différents pour la navigation dans l’interface utilisateur, et améliorer la cohérence entre les jeux et les périphériques, la plupart des périphériques d’entrée physiques jouent simultanément le rôle de périphérique d’entrée logique distinct, appelé contrôleur de navigation d’interface utilisateur.In order to ease the burden of supporting many different input devices for user interface navigation and to encourage consistency between games and devices, most physical input devices simultaneously act as a separate logical input device called a UI navigation controller. Le contrôleur de navigation d’interface utilisateur fournit un vocabulaire commun pour les commandes de navigation dans l’interface utilisateur, sur plusieurs périphériques d’entrée.The UI navigation controller provides a common vocabulary for UI navigation commands across input devices.

En tant que contrôleur de navigation de l’interface utilisateur, les bâtons d’arcade mappent l' ensemble des commandes de navigation requises sur les boutons de la manette et de l' affichage, du menu, de l' action 1et de l' action 2 .As a UI navigation controller, arcade sticks map the required set of navigation commands to the joystick and View, Menu, Action 1, and Action 2 buttons.

Commande de navigationNavigation command Entrée stick arcadeArcade stick input
HautUp Stick vers le hautStick up
DescendreDown Stick vers le basStick down
GaucheLeft Stick vers la gaucheStick left
RightRight Stick vers la droiteStick right
AffichageView Bouton AfficherView button
MenuMenu Bouton MenuMenu button
AcceptationAccept Bouton Action 1Action 1 button
AnnulerCancel Bouton Action 2Action 2 button

Les sticks arcade ne mappent aucun ensemble facultatif de commandes de navigation.Arcade sticks don't map any of the optional set of navigation commands.

Détecter et suivre des sticks arcadeDetect and track arcade sticks

La détection et le suivi des cartes d’arcade fonctionnent exactement de la même façon que pour les boîtiers de souformement, à l’exception de la classe ArcadeStick au lieu de la classe de boîtier .Detecting and tracking arcade sticks works in exactly the same way as it does for gamepads, except with the ArcadeStick class instead of the Gamepad class. Pour plus d’informations, consultez boîtier et vibration .See Gamepad and vibration for more information.

Lecture des entrées du stick arcadeReading the arcade stick

Une fois que vous avez identifié le stick arcade qui vous intéresse, vous pouvez commencer à collecter les entrées de ce stick.After you identify the arcade stick that you're interested in, you're ready to gather input from it. Toutefois, contrairement à d’autres sortes d’entrées que vous connaissez peut-être, les sticks arcade ne communiquent pas les changements d’état en déclenchant des événements.However, unlike some other kinds of input that you might be used to, arcade sticks don't communicate state-change by raising events. À la place, vous devez interroger régulièrement ces boîtiers de commande pour connaître leur état actuel.Instead, you take regular readings of their current state by polling them.

Interroger le stick arcadePolling the arcade stick

Le processus d’interrogation capture un instantané du stick arcade à un moment précis.Polling captures a snapshot of the arcade stick at a precise point in time. Cette approche de la collecte des entrées est adaptée à la plupart des jeux, car leur logique s’exécute généralement dans une boucle déterministe plutôt que d’être pilotée par des événements. en général, il est généralement plus simple d’interpréter les commandes de jeu provenant d’entrées rassemblées en une seule fois par rapport à de nombreuses entrées collectées au fil du temps.This approach to input gathering is a good fit for most games because their logic typically runs in a deterministic loop rather than being event-driven; it's also typically simpler to interpret game commands from input gathered all at once than it is from many single inputs gathered over time.

Vous interrogez un stick arcade en appelant la fonction GetCurrentReading. Cette fonction renvoie un ArcadeStickReading qui contient l’état du stick arcade.You poll an arcade stick by calling GetCurrentReading; this function returns an ArcadeStickReading that contains the state of the arcade stick.

L’exemple de code suivant interroge un stick arcade pour obtenir son état actuel.The following example polls an arcade stick for its current state.

auto arcadestick = myArcadeSticks[0];

ArcadeStickReading reading = arcadestick->GetCurrentReading();

En plus de l’état du stick arcade, chaque valeur comprend un horodatage qui indique précisément le moment d’extraction de cet état.In addition to the arcade stick state, each reading includes a timestamp that indicates precisely when the state was retrieved. Cet horodatage est utile pour faire le lien avec le minutage des valeurs précédentes ou de la simulation de jeu.The timestamp is useful for relating to the timing of previous readings or to the timing of the game simulation.

Lecture des boutonsReading the buttons

Chacun des boutons de la manette de l’arcade — se compose des quatre directions de la manette, de six boutons d' action et de deux boutons spéciaux — . il fournit une lecture numérique qui indique si elle est appuyée (vers le haut) ou commercialisée (haut).Each of the arcade stick buttons—the four directions of the joystick, six Action buttons, and two Special buttons—provides a digital reading that indicates whether it's pressed (down) or released (up). Pour plus d’efficacité, les lectures de bouton ne sont pas représentées sous forme de valeurs booléennes individuelles. au lieu de cela, ils sont tous regroupés dans un seul champ de champ qui est représenté par l’énumération ArcadeStickButtons .For efficiency, button readings aren't represented as individual boolean values; instead, they're all packed into a single bitfield that's represented by the ArcadeStickButtons enumeration.

Notes

Les bâtons d’arcade sont équipés de boutons supplémentaires utilisés pour la navigation dans l’interface utilisateur, tels que les boutons d' affichage et de menu .Arcade sticks are equipped with additional buttons used for UI navigation such as the View and Menu buttons. Ces boutons ne figurent pas dans l’énumération ArcadeStickButtons. Leurs entrées sont lues uniquement quand le stick arcade est utilisé comme périphérique de navigation d’interface utilisateur.These buttons are not a part of the ArcadeStickButtons enumeration and can only be read by accessing the arcade stick as a UI navigation device. Pour plus d’informations, consultez Périphérique de navigation d’interface utilisateur.For more information, see UI Navigation Device.

Les valeurs des boutons sont lues à partir de la propriété Buttons de la structure ArcadeStickReading.The button values are read from the Buttons property of the ArcadeStickReading structure. Comme cette propriété est un champ de bits, un masquage au niveau du bit est effectué pour isoler la valeur du bouton qui vous intéresse.Because this property is a bitfield, bitwise masking is used to isolate the value of the button that you're interested in. Le bouton est enfoncé (enfoncé) lorsque le bit correspondant est défini ; dans le cas contraire, elle est libérée (haut).The button is pressed (down) when the corresponding bit is set; otherwise, it's released (up).

L’exemple suivant détermine si le bouton d' action 1 est enfoncé.The following example determines whether the Action 1 button is pressed.

if (ArcadeStickButtons::Action1 == (reading.Buttons & ArcadeStickButtons::Action1))
{
    // Action 1 is pressed
}

L’exemple suivant détermine si le bouton d' action 1 est relâché.The following example determines whether the Action 1 button is released.

if (ArcadeStickButtons::None == (reading.Buttons & ArcadeStickButtons::Action1))
{
    // Action 1 is released (not pressed)
}

Parfois, vous souhaiterez peut-être déterminer quand un bouton passe de enfoncé à relâché ou relâché, si plusieurs boutons sont enfoncés ou relâché, ou si un ensemble de boutons est organisé d’une façon particulière — , d’autres non.Sometimes you might want to determine when a button transitions from pressed to released or released to pressed, whether multiple buttons are pressed or released, or if a set of buttons are arranged in a particular way—some pressed, some not. Pour plus d’informations sur la détection de ces états, consultez Détecter les changements d’état des boutons et Détecter les dispositions de boutons complexes.For information on how to detect these conditions, see Detecting button transitions and Detecting complex button arrangements.

Exécuter l’exemple InputInterfacingRun the InputInterfacing sample

L’exemple InputInterfacingUWP (github) montre comment utiliser les sticks arcade en tandem avec différents types de périphériques d’entrée. Il illustre aussi le comportement de ces périphériques d’entrée utilisés comme contrôleurs de navigation d’interface utilisateur.The InputInterfacingUWP sample (github) demonstrates how to use arcade sticks and different kinds of input devices in tandem, as well as how these input devices behave as UI navigation controllers.

Voir aussiSee also