2016-06-13 9 views
0

Ich benutze LibGDX, um ein Spiel zu erstellen. Ich habe AssetManager implementiert, um alle Assets zu laden, und ich habe auch eine Klasse GameSkin erstellt, die eine Skin so viele Button-Stile und ähnliches hinzufügt, dass ich es nicht manuell machen muss. Hier ist sie:Ich bekomme einen schwarzen Bildschirm in meinem Spiel, nachdem ich die Zurück-Taste gedrückt habe und

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(); 
} 

}

Dies ist, wie der Begrüßungsbildschirm wie folgt aussieht:

Und das ist, was passiert, nachdem ich die Zurück-Taste drücken, um zu beenden und dann tippen Sie auf die App um fortzufahren:

Es scheint, dass alles (?) neben dem BitmapFont, das ich auf den Tasten verwende, entsorgt wird, aber ich verstehe nicht, was falsch ist mit diesem. Jeder kann helfen?

+0

Sie einen statischen Verweis nicht auf Ihre Assets oder Texturen verwenden. https://github.com/libgdx/libgdx/wiki/Managing-your-assets#creating-an-assetmanager – Tenfour04

+0

Ich benutzte das und es funktionierte. Vielen Dank! –

Antwort

-1

Ihr Code ist fast abgeschlossen, muss dies in Ihrem AndroidLauncher (Reloads Vermögen onResume) gehen:

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

Dies führt jedes Mal zu unnötigem Neuladen, wenn die Benutzeraufgabe weg und zurück zur App wechselt, ohne die Aktivität zu beenden. – Tenfour04

+0

In der Tat, siehe http://badlogicgames.com/forum/viewtopic.php?f=11&t=19960&p=83364#p83364 – Xoppa

+0

Dies geschieht alles bevor die 'resume()' Methode aufgerufen wird. Ich habe aufgehört, statische Variablen zu verwenden und jetzt funktioniert es. –

Verwandte Themen