我正在尝试使用游戏手柄来控制应用程序。这不是一个游戏,只是一个使用 Windows 窗体的普通应用程序。所以它没有游戏循环/更新过程或类似的东西。我不想使用 XNA,因为我认为仅捕获按钮按下是一个巨大的过载。
我正在试验 SlimDX 和 SharpDX。据我了解,它们只是 DirectX 的包装器,对吧?
查看文档,似乎没有按下按钮的事件。所以我一直在寻找替代方案。我尝试添加一个计时器(来自System.Windows.Forms.Timer类),并像这样读取游戏手柄的状态:
private void timer_tick(object sender, EventArgs e)
{
State s = controller.GetState();
stateLabel.Text = s.Gamepad.Buttons == GamepadButtonFlags.A ? "A" : "";
}
计时器滴答之间的间隔足够小(我使用的是 10 毫秒),我可以看到按钮是否被按下。但是,如果按住按钮,我不想多次按下按钮 - 我需要确保在再次按下按钮之前它已被释放。在计时器的两个滴答声之间,我不知道一个按钮是被按下了两次还是只是被按住了。
我考虑过在控制器状态下使用数据包编号,但只要轻轻触碰模拟摇杆或肩部触发器,它就会改变。
帮助?