xna - Process.Start 在 XNA 游戏中打开太多浏览器

标签 xna process.start

我正在 XNA 中创建一个在 PC 上运行的游戏。

在启动屏幕上,用户有三个选项。如果他们按“Enter”,游戏就会开始,如果他们按“M”,他们将进入“帮助”菜单,如果他们按“W”,我希望他们可以访问我的网站。

我正在使用 Process.Start 打开浏览器访问我的网站。

问题是,当我按“W”时,有时它会打开 1 个带有该网站的浏览器。然而,大多数时候它会同时打开 3 - 7 个浏览器。

为什么会同时打开多个浏览器?

如何使其在按下“W”时仅打开 1 个浏览器?

这是我的代码。我还没有建立我的网站,所以我使用 yahoo.com 作为目的地:

 private void UpdateSplashScreen()
    {
        KeyboardState keyState = Keyboard.GetState();

        if (gameState == GameState.StartScreen)               
        {
            if (keyState.IsKeyDown(Keys.Enter))
            {
                gameState = GameState.Level1;
                explosionTime = 0.0f;
            }

            if (keyState.IsKeyDown(Keys.M))
            {
                gameState = GameState.HelpScreen;
            }

           if (keyState.IsKeyDown(Keys.W))
           {

             Process.Start("IExplore.exe", "www.yahoo.com");

           }
        }

谢谢

迈克

最佳答案

处理此问题的常见方法是始终跟踪前一帧的键盘状态。如果某个键在前一帧上没有按下,但在本帧上按下,那么您就知道它刚刚被按下。如果按键在前一帧上被按下,那么您就知道它被按住了。

// somewhere in your initialization code
KeyboardState keyState = Keyboard.GetState();
KeyboardState previousKeyState = keyState;
...

private void UpdateSplashScreen()
{
    previousKeyState = keyState;     // remember the state from the previous frame
    keyState = Keyboard.GetState();  // get the current state

    if (gameState == GameState.StartScreen)               
    {
        if (keyState.IsKeyDown(Keys.Enter) && !previousKeyState.IsKeyDown(Keys.Enter))
        {
            gameState = GameState.Level1;
            explosionTime = 0.0f;
        }

        if (keyState.IsKeyDown(Keys.M) && !previousKeyState.IsKeyDown(Keys.M))
        {
            gameState = GameState.HelpScreen;
        }

       if (keyState.IsKeyDown(Keys.W) && !previousKeyState.IsKeyDown(Keys.W))
       {

         Process.Start("IExplore.exe", "www.yahoo.com");

       }
    }

我通常创建一个 KeyPressed 函数来清理一些东西。

bool KeyPressed(Keys key)
{
  return keyState.IsKeyDown(key) && !previousKeyState.IsKeyDown(key);
}

关于xna - Process.Start 在 XNA 游戏中打开太多浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502454/

相关文章:

c# - 如何让敌人面对角色

c# - 记事本如何在最近打开的文件夹中创建快捷链接

c# - Process.Start ("Excel.exe") 立即退出

xna - 如何在 XNA 中编写一个简单的 .text 内容处理器?

c# - 二维高度图上的基本(假)光线转换

c# - Monogame、SharpDX 和 XNA 有什么关系?

c# - 许多 IF 语句与委托(delegate)?

C# 相当于 cd C :\appFolder c:\app. exe?

C# Process.Start 路径

mysql - 在 process.start 上使用 mysqldump 没有任何反应,但是当我在 cmd 上尝试参数时它正在工作