2016-06-13 19 views
0

我正在使用LibGDX創建遊戲。我已經實現AssetManager來加載所有資產,並且我還創建了一個類GameSkin,它將許多按鈕樣式以及類似的東西添加到皮膚,因此我不必手動執行。那就是:我按下後退按鈕後會在我的遊戲中看到黑屏,並且繼續

public class GameSkin extends Skin { 

private static final AssetManager ASSET_MANAGER = Assets.getAssetManager(); 
private TextureAtlas atlas; 

private FreeTypeFontGenerator generator; 
private FreeTypeFontGenerator.FreeTypeFontParameter parameter; 
private BitmapFont defaultFont; 

private TextButton.TextButtonStyle redButtonStyle, orangeButtonStyle, greenButtonStyle, blueButtonStyle, defaultButtonStyle; 

private Label.LabelStyle labelStyle; 

private Window.WindowStyle windowStyle, firstTimeWindowStyle; 

public GameSkin() { 
    Assets.load(); 
    ASSET_MANAGER.finishLoading(); 

    atlas = ASSET_MANAGER.get("uiskin.atlas"); 
    addRegions(atlas); 

    generator = new FreeTypeFontGenerator(Gdx.files.internal("font/komika.ttf")); 
    parameter = new FreeTypeFontGenerator.FreeTypeFontParameter(); 
    parameter.size = 100; 
    defaultFont = generator.generateFont(parameter); 
    generator.dispose(); 

    defaultButtonStyle = new TextButton.TextButtonStyle(); 
    redButtonStyle = new TextButton.TextButtonStyle(); 
    orangeButtonStyle = new TextButton.TextButtonStyle(); 
    greenButtonStyle = new TextButton.TextButtonStyle(); 
    blueButtonStyle = new TextButton.TextButtonStyle(); 

    redButtonStyle.font = defaultFont; 
    redButtonStyle.up = getDrawable("rbup"); 
    redButtonStyle.down = getDrawable("rbdown"); 

    orangeButtonStyle.font = defaultFont; 
    orangeButtonStyle.up = getDrawable("obup"); 
    orangeButtonStyle.down = getDrawable("obdown"); 

    greenButtonStyle.font = defaultFont; 
    greenButtonStyle.up = getDrawable("gbup"); 
    greenButtonStyle.down = getDrawable("gbdown"); 

    blueButtonStyle.font = defaultFont; 
    blueButtonStyle.up = getDrawable("bbup"); 
    blueButtonStyle.down = getDrawable("bbdown"); 

    defaultButtonStyle.font = defaultFont; 
    defaultButtonStyle.up = getDrawable("obup"); 
    defaultButtonStyle.down = getDrawable("obdown"); 

    labelStyle = new Label.LabelStyle(defaultFont, Color.WHITE); 

    windowStyle = new Window.WindowStyle(defaultFont, Color.WHITE, getDrawable("GT")); 

    firstTimeWindowStyle = new Window.WindowStyle(defaultFont, Color.WHITE, getDrawable("guide")); 

    add("default-font", defaultFont); 
    add("red-button", redButtonStyle); 
    add("orange-button", orangeButtonStyle); 
    add("green-button", greenButtonStyle); 
    add("blue-button", blueButtonStyle); 
    add("default", defaultButtonStyle); 
    add("default", labelStyle); 
    add("default", windowStyle); 
    add("first-time", firstTimeWindowStyle); 
} 

@Override 
public void dispose() { 
    super.dispose(); 
} 

}

這是在歡迎屏幕上的樣子:

這是後我按後退按鈕退出,然後在應用內點發生了什麼恢復:

似乎除了我在按鈕上使用的BitmapFont,所有東西都被丟棄(?),但我不明白什麼是錯誤的有了這個。任何人都可以幫忙

+0

不要使用靜態引用您的資產或紋理。 https://github.com/libgdx/libgdx/wiki/Managing-your-assets#creating-an-assetmanager – Tenfour04

+0

我用它,它的工作。謝謝! –

回答

-1

您的代碼已近尾聲,這需要在您的AndroidLauncher(重裝資產的onResume)去:

@Override 
protected void onResume() { 
    Assets.unload(); 
    Assets.load(); 
    ASSET_MANAGER.finishLoading(); 
    super.onResume(); 
} 
+1

每次用戶任務切換回應用程序而不關閉活動時,這會導致不必要的重新加載。 – Tenfour04

+0

事實上,請參閱http://badlogicgames.com/forum/viewtopic.php?f=11&t=19960&p=83364#p83364 – Xoppa

+0

這一切都發生在調用'resume()'方法之前。我停止使用靜態變量,現在它工作。 –

相關問題