2016-10-05 5 views
0

私は自分のAssetManagerにlibgdxで問題があります。私はメインクラスでそれを作成していて、アセットマネージャを画面に返すgetMethodを持っています。私の画面のクラスでassetManager.get(etc。)に行くと、AssetManager libgdxアセットがロードされていません

FATAL EXCEPTION: GLThread 563 
        Process: com.johnny.gamerpg, PID: 9855 
        com.badlogic.gdx.utils.GdxRuntimeException: 
        Asset not loaded: data/backgrounds/mainMenu.png 

これは私のメインクラスのcreate()です。

public void create() 
{ 

    batch = new SpriteBatch(); 
    assetManager = new AssetManager(); 
    assetManager.load("data/backgrounds/mainMenu.png", Texture.class); 

    startTime = TimeUtils.millis(); 
    this.setScreen(new Splash(this)); 


    if(assetManager.update() && TimeUtils.timeSinceMillis(startTime) > 3000) 
    { 
     setMainMenuScreen(); 
    } 
} 

これは私のMainMenuクラスのコンストラクタです。あなたは、メニュー画面に

public MainMenu(GameControl gam) 
{ 
    this.game = gam; 
    assetManager = gam.getAssestManager(); 

    background = assetManager.get("data/backgrounds/mainMenu.png", Texture.class); 

} 

setMainMenuScreen()

public void setMainMenuScreen() 
{ 
    setScreen(new MainMenu(this)); 
} 
+0

@ assetManager.finishLoading() – Marius

+0

@Mariusはassetをロードすると、SplashからMainMenuに切り替えるためにtrueまたはfalseを返します。 – johnnyboy5566

+0

finishすべてのアセットがロードされるまでブロックをロードするので、内部的にupdate()を使用します。 – Marius

答えて

1

を得るのですか? assetmanagerが読み込まれてから3000ミリ秒前にSplash()に切り替えます。あなたがそれらのどれかをチェックする前でさえ。

assetManager.update()は、アセットが読み込まれるまでfalseを返します。 assetManager.update()はtrueを返すまでフレームごとに呼び出されます。これは

あなたがレンダリング()に

if(assetManager.update() && TimeUtils.timeSinceMillis(startTime) > 3000) 
{ 
    setMainMenuScreen(); 
} 

を動かし始めて、あなたはスプラッシュ画面に切り替えいつ、どのように再考すべきである)あなたは(レンダリングで

if(assetManager.update()){ 
    //done loading 
} 

を確認する必要があることを意味し。

+0

私の目標は、すべてのアセットがロードされてメイン画面に切り替わるまでスプラッシュ画面を表示させることでした。それについてどうすればいいのですか? – johnnyboy5566

関連する問題