A.K*_*.K. 8 c# xna monogame windows-phone-8 windows-store-apps
我正在使用xog的Monogame实现在Windows商店中开发一个简单的空气曲棍球游戏,如果任何一个玩家获得7分,我将导航到一些XAML页面
这是我在Update方法中使用的逻辑
protected override void Update(GameTime gameTime)
{
DrawGame();
if (player1.Score == 7)
{
try
{
PlayerOneScore = player1.Score;
PlayerTwoScore = player2.Score;
App.WinningFlag = true;
App.WinningPlayer = PlayerOneName;
this.Exit();
if (BaseCount == 0)
{
//Navigation to next page
BaseCount++;
Frame ff = new Frame();
ff.Navigate(typeof(NextPage));
Windows.UI.Xaml.Window.Current.Content = ff;
Windows.UI.Xaml.Window.Current.Activate();
}
}
catch (Exception)
{
throw;
}
}
base.Update(gameTime);
}
Run Code Online (Sandbox Code Playgroud)
但是我看到Update和Draw的方法仍然被调用,为什么呢?虽然我已编写代码以离开此页面,但在NextPage中还有一个用于重新启动游戏的按钮
在NextPage中单击按钮重启游戏的事件
private void btnStartNewGame_Click(object sender, RoutedEventArgs e)
{
var app = App.Current as App;
if (app.GamePage != null)
{ app.GamePage = null; app.GamePage = new GamePage(string.Empty); }
else { app.GamePage = new GamePage(string.Empty); }
Window.Current.Content = app.GamePage;
}
Run Code Online (Sandbox Code Playgroud)
这使我看到黑屏,没有绘制game1.cs类中的纹理.
如何从Game1.cs导航到Xaml并返回到Game1.cs作为一个新的电话?
我得到了问题的解决方案。虽然我不知道这是正确/理想的方式,但它至少对我有用。
我编写的导航回游戏的代码是错误的
旧的和错误的
private void btnStartNewGame_Click(object sender, RoutedEventArgs e)
{
var app = App.Current as App;
if (app.GamePage != null)
{ app.GamePage = null; app.GamePage = new GamePage(string.Empty); }
else { app.GamePage = new GamePage(string.Empty); }
Window.Current.Content = app.GamePage;
}
Run Code Online (Sandbox Code Playgroud)
您不必每次访问 GamePage 时都创建一个实例,而是创建一次并在 App 对象中保存对它的引用。我还附上了修改后的版本:
修改的
private void btnStartNewGame_Click(object sender, RoutedEventArgs e)
{
var app = App.Current as App;
if (app.GamePage != null)
Window.Current.Content = app.GamePage;
}
Run Code Online (Sandbox Code Playgroud)
还有一个链接
这对我有帮助,希望对你也有帮助:)
| 归档时间: |
|
| 查看次数: |
1689 次 |
| 最近记录: |