2017-01-28 22 views
0

X 박스 컨트롤러에서 A 버튼을 길게 누르는 지 확인하려고합니다. 지금은 내 버튼이 눌러져 있지만 보류 중인지 확인할 수 있도록 가지고 있습니다. 이것은 내가 누르는지를보기 위해 지금 사용하고있는 코드입니다.SharpDX.Xinput A 버튼을 누르지 않고 누르고 있는지 확인하십시오.

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); 
      } 
     } 
    } 

답변

0

단추를 누른 상태에서 단추를 누른 상태를 말하려면 먼저 상태를 저장하고 각 프레임과 비교해야합니다. 이전 프레임에 버튼이 없지만이 프레임 아래로 내려온 경우 사용자가 방금 버튼을 트리거했습니다. 이전 프레임이 다운 된 상태에서 아직 다운 된 경우 사용자는 버튼을 누르고 있습니다. 이전 프레임이 다운되었지만 더 이상 다운되지 않은 경우 사용자가 버튼을 릴리스했습니다.

그러나 트릭은 이전 프레임의 버튼 상태를 저장하여 현재 버튼 상태와 비교할 수 있어야한다는 것입니다.