SharpDX.Xinput检查A按钮是否被按下而不是按下

时间:2017-01-28 10:24:51

标签: c# sharpdx xbox xinput

我正在尝试检查是否按住了我的xbox控制器上的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);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

要告诉按钮触发器(首先按下)与按住按钮,您必须保存状态并与每个帧进行比较。如果前一帧没有按下按钮但你把它放在这个框架下,那么你的用户只是触发了按钮。如果前一帧已关闭但仍处于关闭状态,则用户按住该按钮。如果前一帧已关闭但不再关闭,则用户释放该按钮。

但诀窍是您必须保存前一帧的按钮状态,以便将其与当前按钮状态进行比较。