2013-08-22 56 views
1

好的,我想要的是在我的gameState.gameLoading之後從窗口模式切換到全屏的代碼,以便下一個gameState.mainMenu狀態處於全屏模式。我怎麼做?我的代碼是:變量:從窗口模式轉到全屏

//Game States 
    public enum gameState 
    { 
     gameLoading, 
     mainMenu, 
     gameOptions, 
     levelSelect, 
     gamePlaying, 
     gameOver 
    } 
    gameState CurrentGameState = gameState.gameLoading; 

Update()方法:

 if (CurrentGameState != gameState.gameLoading) 
     { 
      IsMouseVisible = false; 
      graphics.IsFullScreen = true; 
     } 
     if (CurrentGameState == gameState.gameLoading) 
     { 
      IsMouseVisible = true; 
      graphics.IsFullScreen = false; 
     } 

但它不工作。有什麼建議麼?

+2

graphics.ToggleFullScreen()注:請不要對XBOX –

+0

工作但是當我把它放在我的'if()'方法中時,我就會遇到異常。請回復(在沒有使用thsi函數之前,例子會很棒)。 – PowerUser

+0

你得到的例外是什麼? – davidsbro

回答

0

我已經找到解決的辦法是:

 //Update() method 
     if (CurrentGameState == gameState.gameLoading) 
     { 
      if (Keyboard.GetState().IsKeyDown(Keys.Enter)) 
      { 
       graphics.ToggleFullScreen(); //? 
      } 
      graphics.ApplyChanges(); 
     } 
0

Here你可以檢查你使用graphics.ToggleFullScreen()來解決它的例外。

1

您需要應用的圖形變化,就像這樣:

graphics.IsFullScreen = true; 
graphics.ApplyChanges(); 
// profit 
+0

當我到達全屏後,我再次得到異常:系統.ObjectDisposedException未處理「無法訪問已處理的對象」。在Program.cs行'Game.Run();'在你問我之前,我從來沒有調用'Dispose()'方法。 – PowerUser

+0

@PowerUser這是否僅在您嘗試切換到全屏時纔會發生,或者即使您不切換也會發生?也許你在調用'base.Initialized()'之前試圖訪問'graphics.GraphicsDevice'? – Nolonar

+0

只有在切換時纔會發生,在'Initialize()'方法中調用'bse.Initialize();'。 – PowerUser