2017-04-19 76 views
-1

我的遊戲有3個狀態,一個運行狀態,一個暫停狀態和一個遊戲。所有3個由整數變量gameState監控。當按下暫停按鈕時,狀態應該切換到1(暫停)。當我在運行狀態下單擊按鈕時,它一切正常,但如果我在gameOver狀態下按下它,它會忽略在我的渲染方法中設置的條件。LibGDX渲染方法沒有正確更新?

if(gameState == 1) 
    sb.draw(pausemenu, cam.position.x - 315,cam.viewportHeight/2 - 625/2, 625, 625); 

table.setPosition(cam.position.x, 560); 

if(gameState == 2){ 
    sb.draw(gameover, cam.position.x - gameover.getWidth()/2 - 85 , cam.viewportHeight/2 - gameover.getHeight()/2, 600, 500); 
    highScoreFont.draw(sb, "Highscore: " + highScore, cam.position.x - highScoreFont.getScaleX()/2 - 250 , cam.viewportHeight - 425, 500, Align.center, true); 
    coinsFont.draw(sb, coins, cam.position.x - 201, cam.viewportHeight - 590, 500, Align.center, false); 
    sb.draw(coin, cam.position.x - layout.width/2 - 51, cam.viewportHeight - 660, 90, 90); 
    restartButton.setPosition(cam.position.x - restartButton.getWidth()/2, 525); 
} 

當我按下按鈕,播放聲音,像它應該,應該是處於暫停狀態的按鈕顯示了罰款,但暫停菜單不繪製和GAMEOVER一個不dissapearing 。我錯過了什麼?這就像渲染方法停止檢查後,如果它已被更改爲2

編輯gameState發生了變化: 更新方法:

if(gameState == 0 && tableVisible){ 
    table.setVisible(false); 
    pauseButton.setVisible(true); 
    tableVisible = false; 
    restartVisible = false; 
} 
else if(gameState == 2 && !restartVisible) { 
    restartButton.setVisible(true); 
    restartVisible = true; 
    layout.setText(coinsFont, getCoins() + ""); 
} 
else if(gameState == 1) { 
    if(restartVisible) { 
     restartButton.setVisible(false); 
    } 
    pauseButton.setVisible(false); 
    if(!tableVisible) { 
     table.setVisible(true); 
     tableVisible = true; 
    } 
} 
+0

您是否可以發佈您的按鈕點擊代碼,因爲所顯示的代碼無助於我們診斷您的問題? – dfour

+0

暫停按鈕只是播放一個聲音使得gameState = 1 – vladutelu

+0

發佈的代碼看起來很好,錯誤必須在其他地方。你在其他地方檢查gameState嗎? – dfour

回答

1

目前已經實現在遊戲狀態的複雜方式libGDX框架。您應該擴展Game而不是實施ApplicationListener。然後,將遊戲狀態特定的代碼移動到實現Screen的其他類中。要切換遊戲狀態,您應該在您的Game課程中致電setScreen(Screen screen)

+0

以上發佈它好吧,我現在沒有耐心去學習。你能幫我用我的渲染方法嗎?這是我現在的主要優先事項。後來,我可能會看看你的這種方法 – vladutelu

+2

@vladutelu你的錯誤最終來自你的雜亂代碼。通過使用上面的方法,你會得到更清潔的代碼,如果檢查看起來像這裏的bug那麼就不需要那麼多。 – Skrelp

+0

看,男人,我是初學者。我會盡量在稍後清理我的代碼。現在,我真的需要修復這個錯誤。 – vladutelu