将枚举作为函数中的参数传递
Pass Enum as an argument in a function
所以我在许多不同的地方寻找这个问题的答案,但我没有找到适合我的情况的答案。我正在使用 MonoGame (Microsoft XNA) 开发游戏,我想要一个 class 来处理我的输入。由于 XInput 只能检查特定帧上的键是否按下,我想创建自己的函数来检查它是否被按下、释放或按住。
这是我的问题:
public static void getKeyPress(Enum key)
{
updated = Keyboard.GetState();
if (updated.IsKeyDown(/* what can i put here to have key be the 'Keys' enum */))
{
}
if (updated.IsKeyDown(Keys.Space))
{
}
}
所以,我的问题是我不知道如何使用我拥有的键 Enum 作为函数的参数。我试图将它作为 IsKeyDown 函数的参数,它包含在 XNA 框架中。 IsKeyDown 函数只接受来自框架预构建的 Keys 枚举的内容。第二个 if 语句显示了函数的正确用法,Keys.Space。我想让 getKeyPress 函数像这样工作:
if (getKeyPress(Keys.Backspace))
{
//backspace was pressed
}
或者,这也行得通:
if (getKeyPress(Backspace))
{
//backspace was pressed
}
我完全迷路了,如果有人能帮我解决这个问题,我将不胜感激。
如果我没理解错的话,您应该可以只更改方法签名以指定要传入的类型。在您的情况下,您需要 Keys
枚举。
public static void getKeyPress(Keys key)
{
updated = Keyboard.GetState();
if (updated.IsKeyDown(key))
{
}
if (updated.IsKeyDown(Keys.Space))
{
}
}
所以我在许多不同的地方寻找这个问题的答案,但我没有找到适合我的情况的答案。我正在使用 MonoGame (Microsoft XNA) 开发游戏,我想要一个 class 来处理我的输入。由于 XInput 只能检查特定帧上的键是否按下,我想创建自己的函数来检查它是否被按下、释放或按住。
这是我的问题:
public static void getKeyPress(Enum key)
{
updated = Keyboard.GetState();
if (updated.IsKeyDown(/* what can i put here to have key be the 'Keys' enum */))
{
}
if (updated.IsKeyDown(Keys.Space))
{
}
}
所以,我的问题是我不知道如何使用我拥有的键 Enum 作为函数的参数。我试图将它作为 IsKeyDown 函数的参数,它包含在 XNA 框架中。 IsKeyDown 函数只接受来自框架预构建的 Keys 枚举的内容。第二个 if 语句显示了函数的正确用法,Keys.Space。我想让 getKeyPress 函数像这样工作:
if (getKeyPress(Keys.Backspace))
{
//backspace was pressed
}
或者,这也行得通:
if (getKeyPress(Backspace))
{
//backspace was pressed
}
我完全迷路了,如果有人能帮我解决这个问题,我将不胜感激。
如果我没理解错的话,您应该可以只更改方法签名以指定要传入的类型。在您的情况下,您需要 Keys
枚举。
public static void getKeyPress(Keys key)
{
updated = Keyboard.GetState();
if (updated.IsKeyDown(key))
{
}
if (updated.IsKeyDown(Keys.Space))
{
}
}