1

我正在将游戏引擎从 Java 移植到 Windows Phone 7 XNA。我正在努力解决的一件事是如何创建模式对话框。该对话框使用 SpriteBatch 在 XNA 中呈现,就像其他所有内容一样,但我基本上想要的是这样的:

result = Dialog.Ask("Some Question?", DialogButtons.YesNo);

Dialog.Ask用户单击其中一个按钮之前不会返回。我所做的唯一一件事就是不断调用RunOneFrame()游戏的方法:

private int runLoopCount;
public void BeginRunLoop() {
  int runIndex = ++runLoopCount;
  while (runLoopCount == runIndex) {
    RunOneFrame();
    Thread.Sleep(1);
  }
}

public void EndRunLoop() {
  --runLoopCount;
}

这样做有几个问题:

  1. RunOneFrame仅用于调试目的。
  2. 输入无效!调用TouchPanel.GetState()orGamePad.GetState(PlayerIndex.One)不返回新值。

有没有办法在不丢弃 Game 类和它为初始化所做的一切的情况下启动运行循环?而且我真的不知道如何没有 Game 类,因为在 Windows Phone 7 XNA 应用程序中没有 Main() 方法。它直接进入 Game 构造函数。

4

1 回答 1

0

你想要做的是添加另一个“状态”,你只需要显示对话框,直到用户不选择某些东西......和_modalDialogIsUp布尔......

    protected override void Update(GameTime gameTime)
    {
        if (_modalDialogIsUp)
        {
            // handle only secesary mouse and button clicks
        }
        else
        {
            // normal mouse and button clicks
        }
    }

    protected override void Draw(GameTime gameTime)
    {
        if (_modalDialogIsUp)
        {
            // draw only modal dialog
        }
        else
        {
            // draw game
        }
    }

我只是无法理解为什么你如此绝望地想要确切的模态行为......它是某种新的“同步”教派吗?:)

于 2011-03-13T01:43:03.973 回答