C#XNA 4.0检查是否按下任何键除了一个

时间:2016-01-04 20:36:04

标签: c# xna

我正在尝试用C#XNA编写一个程序,如果按下某个键除了某个键,我需要让程序执行某些操作。这是我想要尝试做的事情:

if (keyboard.IsKeyPressed(Keys.A))
{
    do stuff;
}
else if (ANY OTHER KEY)
{
    do other stuff;
}

2 个答案:

答案 0 :(得分:2)

使用Keyboard.GetState().GetPressedKeys()

例如:

var keys = Keyboard.GetState().GetPressedKeys();
if (keys.Count() > 0 && !keys.Contains(Keys.A)) {
   // Do something.
}

P.S。上述代码未经过测试。

答案 1 :(得分:1)

亚历山德鲁提供了一个正确的答案,但我会详细说明它的工作原理。理解你在做什么总是有用的。

由于Keyboard.GetState().GetPressedKeys()是一个数组,您可以使用长度(或计数)来查看是否按下了某个键:

if (Keyboard.GetState().GetPressedKeys().Length > 0)
{
   // Do something.
}

由于所有按下的键都存储在此数组中,因此您可以看到其中的特定键。这就是您可以使用Contains(Keys.YourSpecificKey))方法进行检查的原因。

然后,您可以使用此选项在布尔表达式中使用!检查此特定键是否不在数组中。

var keys = Keyboard.GetState().GetPressedKeys();
if (keys.Count() > 0 && !keys.Contains(Keys.A)) 
{
   // Do something.
}

由于此代码(可能)位于Update(GameTime gameTime)方法中,因此每秒检查60次。