2017-01-23 1 views
1

Ich habe eine UWP-App entwickelt, die möglicherweise auf XBOX laufen kann.Wie erkennt man die Tasten des Game-Controllers (ABXY) in UWP-Apps

Ich möchte feststellen, ob die Tasten auf dem Gamepad-Controller gedrückt wurden (entweder A B X oder Y).

Ich denke, ich muss das Click Event verwenden? Wenn es sich um das Klickereignis handelt, was muss ich beim Klickereignis einchecken?

in diesem Beitrag der Suche, die bestimmt, ob ein Auslöser gedrückt wurde ..

Controller support for Xbox one in Windows UWP

/* 
* Note: I have not tested this code. 
* If it is incorrect, please do edit with the fix. 
*/ 
using Windows.Gaming.Input; 

// bla bla bla boring stuff... 

// Get the first controller 
var controller = Gamepad.Gamepads.First(); 

// Get the current state 
var reading = controller.GetCurrentReading(); 

// Check to see if the left trigger was depressed about half way down 
if (reading.LeftTrigger == 0.5;) 
{ 
    // Do whatever 
} 

Ich nehme an, es ist eine äquivalente Art und Weise der Überprüfung, ob eine der ABXY Tasten gedrückt wurde ?. Ich werde das nächste Mal überprüfen, ob ich Zufall bekomme.

Auf einer anderen Anmerkung, diese Blog-Post sieht wirklich nützlich für Menschen mit UWP Entwicklung für Xbox One http://grogansoft.com/blog/?p=1278

aktualisieren anfangen: Sieht aus wie ich anrufen kann GetCurrentReading() eine GamepadReading Struktur zu erhalten. und davon den Zustand der GamepadButtons bekommen.

Antwort

3

Das Ereignis KeyDown von CoreWindow oder ein anderes UWP-Steuerelement wird ausgelöst, auch wenn der Benutzer auf die Gamepad-Tasten klickt. Sie können zur Überprüfung Wert wie GamepadA und GamepadB in der VirtualKey Aufzählung so grundlegende Methode finden, um ihre Pressen könnte wie folgt aussehen:

private void CoreWindow_KeyDown(CoreWindow sender, KeyEventArgs args) 
{ 
    if (args.Handled) 
    { 
     return; 
    } 

    switch (args.VirtualKey) 
    { 
     case VirtualKey.GamepadA: 
      // Gamepad A button was pressed 
      break; 

     case VirtualKey.GamepadB: 
      // Gamepad B button was pressed 
      break; 

     case VirtualKey.GamepadX: 
      // Gamepad X button was pressed 
      break; 

     case VirtualKey.GamepadY: 
      // Gamepad Y button was pressed 
      break; 
    } 
} 

Sie haben das Ereignis abonnieren (zum Beispiel im Konstruktor):

Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown; 
+0

Hmm ok. Ich werde es auch versuchen. Welcher von meinen oder Ihren Ansätzen ist der allgemein akzeptierte? (Ich habe meinen Ansatz noch nicht getestet). –

+0

Ich denke, Ihr Ansatz ist zu kompliziert, um nur die Information zu erhalten, ob die Schaltfläche angetippt wurde. Es wird nützlicher sein in Spielen und solchen Dingen, denke ich .. –

Verwandte Themen