XNA C# - 如何在不按下的情况下按下按钮

时间:2012-12-07 11:32:07

标签: c# button xna pressed

我有一张初始图片,当你按回车键时,它会进入游戏状态。问题在于,由于这是一张图像,因此必须按住该按钮才能保持显示游戏画面。有没有办法让它一旦你按下按钮,图像保持关闭?

Update Method:

helpScreen = new HelpScreen(this); 

if (!helpScreen.gamestarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
    helpScreen.gamestarted = true;
}

Draw Method:

if (!helpScreen.gamestarted)
{
    helpScreen.Draw(spriteBatch);
}

2 个答案:

答案 0 :(得分:0)

将状态存储在主游戏类中:

private bool gameStarted = false;

在您的更新方法中,请检查输入:

if (!gameStarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
    gameStarted = true;
}

稍后在您的绘制方法中,只绘制起始图像,如果游戏尚未开始:

if (!gameStarted)
{
    helpScreen.Draw(spriteBatch);
}

一旦玩家按下按钮,就不会再画出来了。同样使用一般gameStarted字段可以明确您的意图,您可以通过简单而自然的方式将其他游戏逻辑建立在其状态上。

答案 1 :(得分:0)

我可以问一下,你有没有围绕输入进行任何其他编码?或者您是从这个帮助屏幕开始的?因为这涵盖了输入处理的基础知识。

看起来你把它看作一个事件驱动系统,实际上它是一个游戏循环。这意味着您检查每个循环的值并将输出基于该值,而不是通过事件(例如,单击)

我要做的是记录前一个值,然后在下一个循环中,将该值与当前值进行比较。 Update方法中的示例:

//Outside of Update loop declare
KeyboardState previousState = Keyboard.GetState();

//Inside update loop
if (Keyboard.GetState().IsKeyUp(Keys.Enter) && previousState.IsKeyDown(Keys.Enter))
{
        helpScreen = null;     }

按下并释放Enter按钮时将触发此操作。我将对该代码执行许多其他更改,但这应该指出您针对此特定问题的正确方向。