在实际情况中,我们有时候需要根据不同的游戏场景来决定wp的后退“场景”。
所以,我们可以先建一个常量类,里面放上一个常量,用来标记不同页面的代表值,
例如:
class GameMain { public static int CurrentScreen; }
然后再在不同场景的类的构造函数给之赋值
class ChooseScreen : CCScene { private static ChooseScreen _current; public static ChooseScreen Current { get { GameMain.CurrentScreen = 1; if (_current == null) { _current = new ChooseScreen(); } return _current; } } private ChooseScreen() { this.addChild(new ChooseLayer()); } }
最后在Game1.cs里重写函数
protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) { switch (GameMain.CurrentScreen) { case -1: case 0: this.Exit(); break; case 1: CCDirector.sharedDirector().replaceScene(MainMenuScreen.Current); break; case 2: string msg = "Quit Game?"; List<string> MBButtons = new List<string>(); MBButtons.Add("Yes"); MBButtons.Add("No"); Guide.BeginShowMessageBox("Game Over", msg, MBButtons, 0, MessageBoxIcon.Alert, GetMBResult, null); break; default: this.Exit(); break; } } base.Update(gameTime); }
void GetMBResult(IAsyncResult r)
{
int? b = Guide.EndShowMessageBox(r);
if (b == 0)
{
CCDirector.sharedDirector().replaceScene(ChooseScreen.Current);
}
}
完成。