Arcade-JoystickArcade stick

Auf dieser Seite werden die Grundlagen der Programmierung für Xbox One-Arcade-Joysticks mittels Windows.Gaming.Input.ArcadeStick und verwandter APIs für die universelle Windows-Plattform (UWP) beschrieben.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).

Auf dieser Seite erhalten Sie Informationen zu folgenden Vorgängen:By reading this page, you'll learn:

  • Erstellen einer Liste der verbundenen Arcade-Joysticks und ihrer Benutzerhow to gather a list of connected arcade sticks and their users
  • Ermitteln, ob ein Arcade-Joystick hinzugefügt oder entfernt wurdehow to detect that an arcade stick has been added or removed
  • Lesen der Eingabe von einem oder mehreren Arcade-Joystickshow to read input from one or more arcade sticks
  • Verhalten von-listenstäbchen als Benutzeroberflächen-Navigationsgerätehow arcade sticks behave as UI navigation devices

Übersicht über Arcade-JoysticksArcade stick overview

Bei Arcade-Joysticks handelt es sich um Eingabegeräte, die den Eindruck klassischer Arcade-Automaten vermitteln und aufgrund ihrer äußerst präzisen digitalen Steuerelemente geschätzt werden.Arcade sticks are input devices valued for reproducing the feel of stand-up arcade machines and for their high-precision digital controls. Arcade-Joysticks sind das ideale Eingabegerät für Kampfspiele und andere Spiele im Arcade-Stil und eignen sich für alle Spiele mit komplett digitaler Steuerung.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. Arcade-Joysticks werden in Windows 10- und Xbox One-UWP-Apps durch den Namespace Windows.Gaming.Input unterstützt.Arcade sticks are supported in Windows 10 and Xbox One UWP apps by the Windows.Gaming.Input namespace.

Xbox One-scrollsticks sind mit einem 8-Wege-digitalen Joystick, sechs Aktions Schaltflächen (dargestellt als a1-A6 in der Abbildung unten) und zwei sonderschaltflächen (dargestellt als S1 und S2) ausgestattet. Sie sind alle digitalen Eingabegeräte, die keine analogen Steuerelemente oder Vibrationen unterstützen.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-scrollsticks sind auch mit Sicht -und Menü Schaltflächen ausgestattet, mit denen die Navigation in der Benutzeroberfläche unterstützt wird. Sie sind jedoch nicht für die Unterstützung von Spiel Befehlen gedachtXbox 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.

Der Arkaden Strich mit vier direktionalem Joystick, 6 Aktions Schaltflächen (a1-a6) und zwei sonderschaltflächen (S1 und S2)

BenutzeroberflächennavigationUI navigation

Um den Aufwand für die Unterstützung vieler unterschiedlicher Eingabegeräte für die Benutzeroberflächennavigation zu verringern und die Konsistenz zwischen Spielen und Geräten zu fördern, dienen die meisten physischen Eingabegeräte gleichzeitig als getrennte logische Eingabegeräte, die als Benutzeroberflächen-Navigationscontroller bezeichnet werden.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. Der Benutzeroberflächen-Navigationscontroller stellt ein gemeinsames Vokabular für Benutzeroberflächen-Navigationsbefehle über verschiedene Eingabegeräte hinweg bereit.The UI navigation controller provides a common vocabulary for UI navigation commands across input devices.

Bei einem UI-Navigations Controller werden die erforderlichen Navigations Befehle auf den Schalt Flächen "Joystick" und "Ansicht", " Menü", " Aktion 1" und " Aktion 2 " angezeigt.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.

NavigationsbefehlNavigation command Eingabe per Arcade-JoystickArcade stick input
Nach obenUp Joystick nach obenStick up
Nach untenDown Joystick nach untenStick down
LeftLeft Joystick nach linksStick left
RightRight Joystick nach rechtsStick right
SichtView Ansicht-TasteView button
MenüMenu Menü-TasteMenu button
AkzeptierenAccept Taste für Aktion 1Action 1 button
AbbrechenCancel Taste für Aktion 2Action 2 button

Arcade-Joysticks ordnen keines der optionalen Sätze mit Navigationsbefehlen zu.Arcade sticks don't map any of the optional set of navigation commands.

Ermitteln und Nachverfolgen von Arcade-JoysticksDetect and track arcade sticks

Das erkennen und Nachverfolgen von Arkaden Stäbchen funktioniert genauso wie für Gamepads, außer mit der " arcadestick "-Klasse anstelle der Gamepad -Klasse.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. Weitere Informationen finden Sie unter Gamepad und Vibration .See Gamepad and vibration for more information.

Lesen des Arcade-JoysticksReading the arcade stick

Nachdem Sie den Arcade-Joystick identifiziert haben, für den Sie sich interessieren, können Sie Eingaben von ihm erfassen.After you identify the arcade stick that you're interested in, you're ready to gather input from it. Anders als im Fall anderer Eingaben, die Sie möglicherweise kennen, teilen Arcade-Joysticks Zustandsänderungen jedoch nicht durch das Auslösen von Ereignissen mit.However, unlike some other kinds of input that you might be used to, arcade sticks don't communicate state-change by raising events. Stattdessen müssen Sie den aktuellen Status regelmäßig lesen, indem Sie ihn abrufen.Instead, you take regular readings of their current state by polling them.

Abfragen des Arcade-JoysticksPolling the arcade stick

Beim Abfragen wird ein Snapshot des Arcade-Joysticks zu einem bestimmten Zeitpunkt erstellt.Polling captures a snapshot of the arcade stick at a precise point in time. Diese Vorgehensweise für die Eingabe Erfassung eignet sich gut für die meisten Spiele, da ihre Logik in der Regel in einer deterministischen Schleife ausgeführt wird, anstatt Sie als ereignisgesteuert zu betrachten. Es ist in der Regel einfacher, Spiel Befehle aus Eingaben zu interpretieren, die alle gleichzeitig gesammelt werden, als aus vielen einzelnen Eingaben, die im Laufe der Zeit gesammelt werden.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.

Sie fragen einen Arcade-Joystick ab, indem Sie GetCurrentReading aufrufen. Diese Funktion gibt ein ArcadeStickReading-Element zurück, das den Zustand des Arcade-Joysticks enthält.You poll an arcade stick by calling GetCurrentReading; this function returns an ArcadeStickReading that contains the state of the arcade stick.

Im folgenden Beispiel wird der aktuelle Zustand eines Arcade-Joysticks abgefragt.The following example polls an arcade stick for its current state.

auto arcadestick = myArcadeSticks[0];

ArcadeStickReading reading = arcadestick->GetCurrentReading();

Zusätzlich zum Zustand des Arcade-Joysticks enthält jede Ablesung einen Zeitstempel, der den genauen Zeitpunkt angibt, zu dem der Zustand abgerufen wurde.In addition to the arcade stick state, each reading includes a timestamp that indicates precisely when the state was retrieved. Der Zeitstempel ist nützlich, um einen Bezug zu den Zeitpunkten vorheriger Ablesungen oder zum Zeitpunkt der Spielsimulation herzustellen.The timestamp is useful for relating to the timing of previous readings or to the timing of the game simulation.

Lesen der TastenwerteReading the buttons

Jede der scrollstäbchen — Schaltflächen zeigt die vier Richtungen des Joysticks, sechs Aktions Schaltflächen und zwei sonderschaltflächen ein digitales Lese-und Schreibvorgang an, — das anzeigt, ob es gedrückt oder freigegeben wird (nach oben).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). Aus Effizienzgründen werden Schaltflächen Messwerte nicht als einzelne boolesche Werte dargestellt. Stattdessen werden Sie alle in ein einzelnes Bitfeld gepackt, das von der " [ardestickbuttons][] "-Enumeration dargestellt wird.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.

Hinweis

Für die Benutzeroberflächen Navigation, wie z. b. die Ansicht und Menü SchaltflächenArcade sticks are equipped with additional buttons used for UI navigation such as the View and Menu buttons. Diese Tasten sind nicht in der Enumeration ArcadeStickButtons enthalten und können nur gelesen werden, wenn auf den Arcade-Joystick als Benutzeroberflächen-Navigationsgerät zugegriffen wird.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. Weitere Informationen finden Sie unter Benutzeroberflächen-Navigationsgerät.For more information, see UI Navigation Device.

Die Schaltflächenwerte werden von der Buttons-Eigenschaft der ArcadeStickReading-Struktur gelesen.The button values are read from the Buttons property of the ArcadeStickReading structure. Da diese Eigenschaft ein Bitfeld ist, wird eine bitweise Maskierung verwendet, um den Wert der Taste zu isolieren, an der Sie interessiert sind,Because this property is a bitfield, bitwise masking is used to isolate the value of the button that you're interested in. Wenn das entsprechende Bit festgelegt ist, wird die Schaltfläche gedrückt (unten). Andernfalls wird Sie freigegeben (up).The button is pressed (down) when the corresponding bit is set; otherwise, it's released (up).

Im folgenden Beispiel wird bestimmt, ob die Schaltfläche Aktion 1 gedrückt ist.The following example determines whether the Action 1 button is pressed.

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

Im folgenden Beispiel wird bestimmt, ob die Schaltfläche Aktion 1 freigegeben wird.The following example determines whether the Action 1 button is released.

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

Manchmal möchten Sie möglicherweise ermitteln, ob eine Schaltfläche von gedrückter zu freigegeben oder freigegeben ist, ob mehrere Schaltflächen gedrückt oder freigegeben sind oder ob ein Satz von Schaltflächen auf eine bestimmte Weise angeordnet — ist, nicht.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. Weitere Informationen zum Ermitteln dieser Bedingungen finden Sie unter Erkennen von Tastenübergängen und Erkennen von komplexen Tastenanordungen.For information on how to detect these conditions, see Detecting button transitions and Detecting complex button arrangements.

Ausführen des InputInterfacing-BeispielsRun the InputInterfacing sample

Das InputInterfacingUWP-Beispiel (github) veranschaulicht, wie Arcade-Joysticks und verschiedene Arten von Eingabegeräten zusammen verwendet werden und wie diese Eingabegeräte sich bei der Verwendung als Benutzeroberflächen-Navigationcontrollern verhalten.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.

Weitere InformationenSee also