我需要与Xbox 360控制器连接,而我的有限知识使我无法使用C#。我不想使用XNA(并且要求用户安装它)用于这个简单的事情,所以我使用SlimDX来允许我与XInput接口。我已经能够检测到所有按钮按下并且小程序正在进行......但是我需要知道如何轮询/知道何时按下按钮,然后触发事件。
现在我有一个以10毫秒运行的计时器,它会检查按下哪些按钮并根据它进行操作。但是,让我们说你按X一秒钟=它检测到X是"按下" 100次因为好,每隔10ms,X被按下。我只想在按下按钮时启动我的事件,而不必依赖于计时器。
是否可以在C#上使用SlimDX?如果是这样,怎么样?如果没有,C#是否有更好/更低延迟的XInput包装器可以满足我的需求?
提前致谢!
答案 0 :(得分:1)
创建两个变量来存储按钮在民意调查之间的状态。
bool curretButtonState;//pressed == true
bool previousButtonState;
//poll each 10ms
void CheckInput()
{
currentButtonState = pollResult;
if(currentButtonState == true && previousButtonState == false)
{
//button just pressed, call code
}
if(currentButtonState== false && previousButtonState == true)//additional functionality if desired
{
//button just released, call other code
}
previousButtonState = currentButtonState;
}
我们说它检测到按下按钮并运行相应的代码,然后下次轮询(10ms),因为前一个状态切换为true,按钮仍然按下,则两个状态都将是真的,它不会第二次运行代码。在释放并重新按下按钮之前,第一个if语句将不再为真。