2016-06-13 1 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()». Я прекратил использовать статические переменные, и теперь он работает. –

Смежные вопросы