2017-01-28 1 views
0

J'essaie de vérifier si j'appuie sur le bouton A de mon contrôleur xbox et que je le maintiens enfoncé. En ce moment je l'ai donc je peux voir si mon bouton est pressé mais ne pas être en attente. C'est le code que j'utilise en ce moment pour voir si c'est pressé.SharpDX.Xinput Vérifiez si un bouton est maintenu enfoncé au lieu d'être enfoncé

private void Loop() 
    { 
     while (true) 
     { 
      var state = _controller.GetState(); 
      var LX = state.Gamepad.LeftThumbX; 
      var LY = state.Gamepad.LeftThumbY; 
      var magnitude = Math.Sqrt(LX * LX + LY * LY); 
      if (magnitude > _deadzone) 
      { 
       MoveCursor(LX, LY * -1); 
       Thread.Sleep(20); 
      } 
      if (state.Gamepad.Buttons == GamepadButtonFlags.A) 
      { 
       LeftClick(); 
       Thread.Sleep(100); 
      } 
      else if (state.Gamepad.Buttons == GamepadButtonFlags.B) 
      { 
       RightClick(); 
       Thread.Sleep(100); 
      } 
     } 
    } 

Répondre

0

Pour dire les déclencheurs des boutons (première pression) par rapport bouton tenue, vous devez enregistrer l'état et comparer à chaque trame. Si le cadre précédent n'avait pas le bouton enfoncé mais que vous l'aviez en bas de ce cadre, votre utilisateur a simplement déclenché le bouton. Si le cadre précédent était en panne et qu'il était toujours en panne, l'utilisateur maintenait le bouton enfoncé. Si le cadre précédent était en panne mais qu'il n'est plus en panne, l'utilisateur a relâché le bouton.

Mais l'astuce est que vous devez sauvegarder l'état du bouton de la frame précédente afin de pouvoir le comparer à l'état actuel du bouton.