Stick arcadeArcade stick

En esta página se describen los conceptos básicos de programación para sticks arcade de Xbox One usando Windows.Gaming.Input.ArcadeStick y las API relacionadas para la Plataforma universal de Windows (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).

En esta página encontrarás información sobre:By reading this page, you'll learn:

  • Cómo obtener una lista de sticks arcade conectados y sus usuarioshow to gather a list of connected arcade sticks and their users
  • Cómo detectar que se ha agregado o quitado un stick arcadehow to detect that an arcade stick has been added or removed
  • Cómo leer la entrada de uno o más sticks arcadehow to read input from one or more arcade sticks
  • Cómo se comportan los sticks Arcade como dispositivos de navegación de IUhow arcade sticks behave as UI navigation devices

Información general sobre el stick arcadeArcade stick overview

Los sticks arcade son dispositivos de entrada apreciados por reproducir la sensación de las máquinas arcade de pie y por sus controles de alta precisión digital.Arcade sticks are input devices valued for reproducing the feel of stand-up arcade machines and for their high-precision digital controls. Los sticks arcade son el dispositivo de entrada perfecto para los combates cara a acara y otros juegos de estilo arcade, además de ser adecuados para cualquier juego que funcione con controles totalmente digitales.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. Los sticks arcade son compatibles con aplicaciones para UWP de Windows 10 y Xbox One en el espacio de nombres Windows.Gaming.Input.Arcade sticks are supported in Windows 10 and Xbox One UWP apps by the Windows.Gaming.Input namespace.

Los sticks arcade de Xbox One están equipados con un joystick digital de 8 vías, seis botones de acción (representados como a1-A6 en la imagen siguiente) y dos botones especiales (representados como S1 y S2); todos son dispositivos de entrada digitales que no admiten controles analógicos ni vibraciones.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. Los sticks arcade de Xbox One también están equipados con botones de vista y menú que se usan para admitir la navegación de la interfaz de usuario, pero no están diseñados para admitir comandos de juegos y no se puede acceder a ellos fácilmente como botones del joystick.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.

Stick Arcade con joystick 4 direccional, 6 botones de acción (a1-A6) y 2 botones especiales (S1 y S2)

Navegación de la interfaz de usuarioUI navigation

Para aliviar la carga de la compatibilidad con muchos dispositivos de entrada diferentes para la navegación de la interfaz de usuario y fomentar la coherencia entre dispositivos y juegos, la mayoría de dispositivos de entrada física actúan simultáneamente como dispositivo independiente de entrada lógica, llamado controlador de navegación de la interfaz de usuario.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. El controlador de navegación de la interfaz de usuario proporciona un vocabulario común para los comandos de navegación de la interfaz de usuario entre los dispositivos de entrada.The UI navigation controller provides a common vocabulary for UI navigation commands across input devices.

Como controlador de navegación de la interfaz de usuario, los sticks Arcade asignan el conjunto necesario de comandos de navegación a los botones joystick y vista, menú, acción 1y acción 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.

Comando de navegaciónNavigation command Entrada del stick arcadeArcade stick input
ArribaUp Stick hacia arribaStick up
BajarDown Stick hacia abajoStick down
LeftLeft Stick hacia la izquierdaStick left
RightRight Stick hacia la derechaStick right
VerView Botón de vistaView button
MenúMenu Botón de menúMenu button
AcceptAccept Botón de acción 1Action 1 button
CancelarCancel Botón de acción 2Action 2 button

Los sticks arcade no se asignan a ninguno de los comandos del conjunto opcional de navegación.Arcade sticks don't map any of the optional set of navigation commands.

Detección y seguimiento de los sticks arcadeDetect and track arcade sticks

La detección y el seguimiento de los sticks Arcade funcionan exactamente del mismo modo que para los controladores de juegos, excepto con la clase ArcadeStick en lugar de la clase de controlador de juegos .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. Consulte controlador de juegos y vibración para obtener más información.See Gamepad and vibration for more information.

Lectura del stick arcadeReading the arcade stick

Después de identificar el stick arcade que te interesa, puedes recopilar datos de él.After you identify the arcade stick that you're interested in, you're ready to gather input from it. Sin embargo, a diferencia de algunos otros tipos de entrada con los que puedes estar familiarizado, los sticks arcade no comunican el cambio de estado mediante la generación de eventos.However, unlike some other kinds of input that you might be used to, arcade sticks don't communicate state-change by raising events. En cambio, tienes que realizar lecturas regulares de su estado actual mediante sondeos.Instead, you take regular readings of their current state by polling them.

Sondeo del stick arcadePolling the arcade stick

El sondeo captura una instantánea del stick arcade en un momento preciso en el tiempo.Polling captures a snapshot of the arcade stick at a precise point in time. Este enfoque para la recopilación de entradas es una buena opción para la mayoría de los juegos porque su lógica normalmente se ejecuta en un bucle determinista en lugar de ser controlado por eventos. Normalmente, es más fácil interpretar los comandos del juego a partir de la entrada recopilada todos a la vez que desde muchas entradas únicas recopiladas a lo largo del tiempo.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.

El sondeo de un stick arcade se realiza llamando a GetCurrentReading; esta función devuelve ArcadeStickReading que contiene el estado del stick arcade.You poll an arcade stick by calling GetCurrentReading; this function returns an ArcadeStickReading that contains the state of the arcade stick.

En el siguiente ejemplo se sondea el estado actual de un stick arcade.The following example polls an arcade stick for its current state.

auto arcadestick = myArcadeSticks[0];

ArcadeStickReading reading = arcadestick->GetCurrentReading();

Además del estado del stick arcade, cada lectura incluye una marca de tiempo que indica con precisión cuándo se recuperó el estado.In addition to the arcade stick state, each reading includes a timestamp that indicates precisely when the state was retrieved. La marca de tiempo es útil para establecer una relación con los intervalos de lecturas anteriores o la duración de la simulación de juego.The timestamp is useful for relating to the timing of previous readings or to the timing of the game simulation.

Lectura de los botonesReading the buttons

Cada uno de los botones del Stick Arcade — las cuatro direcciones del joystick, seis botones de acción y dos botones especiales — proporcionan una lectura digital que indica si se ha presionado (hacia abajo) o se ha soltado (arriba).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). Por motivos de eficacia, las lecturas de los botones no se representan como valores booleanos individuales; en su lugar, se empaquetan en un solo campo de bits que se representa mediante la enumeración 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.

Nota

Los sticks arcade están equipados con botones adicionales que se usan para la navegación de la interfaz de usuario, como los botones de vista y de menú .Arcade sticks are equipped with additional buttons used for UI navigation such as the View and Menu buttons. Estos botones no forman parte de la enumeración ArcadeStickButtons y solo se pueden leer accediendo al stick arcade como dispositivo de navegación de la interfaz de usuario.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. Para obtener más información, consulta UI Navigation Device (Dispositivo de navegación de la interfaz de usuario).For more information, see UI Navigation Device.

Los valores de los botones se leen en la propiedad Buttons de la estructura ArcadeStickReading.The button values are read from the Buttons property of the ArcadeStickReading structure. Dado que esta propiedad es un campo de bits, se usa el enmascaramiento bit a bit para aislar el valor del botón que te interesa.Because this property is a bitfield, bitwise masking is used to isolate the value of the button that you're interested in. El botón está presionado (abajo) cuando se establece el bit correspondiente; de lo contrario, se libera (up).The button is pressed (down) when the corresponding bit is set; otherwise, it's released (up).

En el ejemplo siguiente se determina si se presiona el botón 1 de la acción .The following example determines whether the Action 1 button is pressed.

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

En el ejemplo siguiente se determina si se libera el botón de la acción 1 .The following example determines whether the Action 1 button is released.

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

En ocasiones, es posible que desee determinar si un botón cambia de presionado a liberado o liberado a presionado, si se presionan o se liberan varios botones, o si un conjunto de botones se organizan de una manera determinada — , pero no.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. Para obtener información sobre cómo detectar estas condiciones, consulta Detección de transiciones de botón y Detección disposiciones de botones complejas.For information on how to detect these conditions, see Detecting button transitions and Detecting complex button arrangements.

Ejecución de la muestra de InputInterfacingRun the InputInterfacing sample

La muestra de InputInterfacingUWP (github) ilustra cómo usar los sticks arcade y distintos tipos de dispositivos de entrada conjuntamente, así como el comportamiento de estos dispositivos de entrada como controladores de navegación de la interfaz de usuario.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.

Vea tambiénSee also