我正在尝试学习XNA游戏编程,现在我想等待Key按下 我测试了它:
while (IsKeyPressed = Keyboard.GetState().IsKeyDown(key));
但是当密钥被释放时,IsKeyPressed也是如此
答案 0 :(得分:3)
该代码实际上是一个自旋锁。 不要使用自旋锁 。
您看到的错误很可能是,因为您正在使用自旋锁,但它没有机会正确更新。
相反,您应该读取被按下的键,并在与停止处理相关的任何类中设置状态(可能是if
函数中的简单Update
检查。然后,当您检测到释放时,您将更改状态,以便if
检查通过。
类似的东西:
//Main Update
if (Keyboard.GetState().IsKeyDown(key))
myObject.Wait();
else
myObject.Continue();
//Other object
public void Wait()
{
waiting = true;
}
public void Continue()
{
waiting = false;
}
public void Update()
{
if (!waiting)
{
//Update state
}
}
您可以随时检查以前的状态,以避免重复调用Wait
和Continue
,但这将是提供代码的微优化。