2015-11-02 75 views
3

當我的遊戲開始時,我有一個飛濺/加載屏幕。起初,我使用AssetManager加載我的資產,之後,我想將我的Screens加載到內存中。目前,這就是我要做的事:libGDX:如何正確加載屏幕到內存中?

menuState = new MenuState(game); 
playState = new PlayState(game); 
gameOverState = new GameOverState(game); 

現在我想展示MenuState有淡入淡出和動畫。這工作正常,但這個動畫的進展是基於當前的增量。對於接下來的幾次渲染調用,我得到如此高的三角洲,根本沒有可見的動畫。

我不明白,爲什麼有一個高三角洲不僅爲下一個渲染調用(加載所有這些狀態需要時間,但是當他們完成加載後,沒有什麼可做了),但也爲接下來的幾個呈現調用。

如何加載這些屏幕後,三角洲低加載後?

回答

2

在考慮delta的動畫過程中,您可以引入「最大」增量。這將有所幫助,這樣您的動畫就不會被跳過,但它起初可能仍然有點遲緩。

類似的方法在LibGDX源代碼用於Stage.java

public void act() { 
    act(Math.min(Gdx.graphics.getDeltaTime(), 1/30f)); 
} 

public void act (float delta) { 
    //does stuff 
} 

Math.min將採取較小的值,要麼deltaTime1/30f的 - 以保證它會以小的增量更新,即使每幀是實際上需要很長時間。