1

I am having a weird issue with just loading my assets, using the assetManager. My assetManager is a separate class I made to make everything shorter and more neat. My Asset class isn't static. I have all the assets loaded in a non static assetDescriptor.

I load my splash screen which in tern loads all my assets while that is displaying. when I call the other screen the assets I have loaded can not be loaded and causes my game to crash. The splash screen does load but when it assigns a new screen it crashes.

I have spent 2 days on this issue. trying more then 15 variations. To no prevail.

My error message is:

com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: stuff.png
    at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:144)
    at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:167)
    at com.nectar.pewdybird.mainMenu.<init>(mainMenu.java:71)
    at com.nectar.pewdybird.pewdyBird.render(pewdyBird.java:68)
    at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:459)
    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523)
    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

Splash.class:

public Assets assets;

public void create(){
   assets = new Assets();
   assets.load();
}

public void render(){
   if(assets.update()) {
        setScreen(new mainMenu(this));
        dispose();
    } else {
        //Splash Screen
        gl.glClearColor(0,0,0,1);
        gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.begin();
        //Draws SplashScreen
        batch.end();
    }
}

public void dispose(){
    this.screen.dispose();
    this.batch.dispose();
}

mainMenu.class

public Assets assets;
private Texture Stuff;    

public mainMenu(Splash game){
     assets = game.assets;
     Stuff = game.assets.manager.get(game.assets.stuff);


}

Asset.class

 public AssetManager manager = new AssetManager(new InternalFileHandleResolver());

public final AssetDescriptor<Texture> stuff =
        new AssetDescriptor<Texture>("stuff.png", Texture.class);

 public void load(){
    manager.load(stuff);
    //12 More loads
    manager.finishLoading();

}

public boolean update(){
    return manager.update();
}

Thank you for reading and possibly helping with my maybe simple issue.

  • 1. Splash class implements Screen or extends Game class. ? 2. You're using parameterised constructor of mainMenu, where it is ? – Abhishek Aryan Apr 13 '17 at 18:38
  • Splash extends com.badlogic.gdx.game; and mainMenu implements Screen. and the mainMenu should I make the splash implement screen aswell? I just figured that I am not actually using gdx.game in my splash. – deathwillcome800 Apr 13 '17 at 18:58

1 Answers1

1

Look at your mainMenu class. You're creating a new Assets object, that don't have any asset so instead of creating a new Assets object use Assets object of Splash because you loaded assets on that object.

public Assets assets;
public Texture Stuff;

public mainMenu(){
     assets = new Assets();  // why are you creating new Assets here
     Stuff = assets.manager.get(assets.stuff);
}

Actually you're creating object of mainMenu by using parameterised constructor in Splash class

public mainMenu(Splash splash){
     assets = splash.assets;  // instead of creating new take reference of Splash class assets
     Stuff = assets.manager.get(assets.stuff);
}
Abhishek Aryan
  • 19,936
  • 8
  • 46
  • 65