将Enum作为函数中的参数传递

时间:2017-06-10 18:47:12

标签: c# enums xna

所以我在许多不同的地方找到了这个问题的答案,但我找不到适合我情况的答案。我正在使用MonoGame(Microsoft XNA)开发游戏,我想要一个处理我输入的类。由于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))
        {

        }

    }

所以,我的问题是我无法弄清楚如何使用我所拥有的关键枚举作为我的函数的论点。我试图让它成为IsKeyDown函数的参数,它包含在XNA框架中。 IsKeyDown函数只接受来自使用框架预构建的Keys枚举的东西。第二个if语句使用Keys.Space显示函数的正确用法。我想让getKeyPress函数像这样工作:

if (getKeyPress(Keys.Backspace))
{
    //backspace was pressed
}

或者,这也可行:

if (getKeyPress(Backspace))
{
    //backspace was pressed
}

我完全迷失了,如果有人能帮助我解决这个问题,我将非常感激。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您应该只需更改方法签名即可指定要传入的类型。在您的情况下,您需要Keys枚举。

public static void getKeyPress(Keys key)
{
    updated = Keyboard.GetState();
    if (updated.IsKeyDown(key))
    {
    }

    if (updated.IsKeyDown(Keys.Space))
    {
    }
}