【发布时间】:2011-03-13 09:43:03
【问题描述】:
我正在将游戏引擎从 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;
}
这有几个问题:
-
RunOneFrame仅用于调试目的。 - 输入无效!调用
TouchPanel.GetState()或GamePad.GetState(PlayerIndex.One)不会返回新值。
有没有什么方法可以在不丢弃 Game 类以及它为初始化所做的一切的情况下启动运行循环?而且我真的不知道如何没有 Game 类,因为在 Windows Phone 7 XNA 应用程序中没有 Main() 方法。它直接进入 Game 构造函数。
【问题讨论】:
-
这在 XNA 中很难做到。你试过这个吗? msdn.microsoft.com/en-us/library/ff827868.aspx
-
我知道这个方法,我知道如何使用精灵实现自定义对话框的异步显示,但我真的在寻找一种同步的方法。我已经非常接近(当然不受支持)RunOneFrame,我只是缺少输入。
-
我一直在研究使用其他方法检测触摸和键盘状态,但到目前为止还没有运气。唯一可用的方法似乎特定于 XNA(不起作用)和 Silverlight(我没有使用)。
标签: c# windows-phone-7 xna xna-4.0