AssetManager libgdx资产未加载

时间:2016-10-05 03:17:15

标签: java android libgdx

我在libgdx中遇到了AssetManager的问题,我在我的Main类中创建它并有一个getMethod将assetManager返回到我的屏幕。当我在我的屏幕类中转到assetManager.get(等)时,它说

$ sudo ifconfig lo0 10.0.0.2 alias                                                                                           
$ echo "rdr pass on lo0 inet proto tcp from any to 10.0.0.2 port 80 ->     127.0.0.1 port 32771" | sudo pfctl -ef -

pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

No ALTQ support in kernel
ALTQ related functions disabled
pfctl: pf already enabled

这是我在Main Class中的create()。

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

这是我的MainMenu类构造函数。

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

setMainMenuScreen()

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

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

}

1 个答案:

答案 0 :(得分:2)

你有没有进入菜单屏幕?在assetmanager完成加载之前和3000 milisecs之前切换到Splash()。甚至在你检查其中任何一个之前。

assetManager.update()将返回false,直到加载资产。 assetManager.update()意味着每帧都被调用,直到它返回true。这意味着您应该检查

if(assetManager.update()){
    //done loading
}
你的渲染()

中的

你应该从移动开始

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

进入render()并重新考虑切换到Splash屏幕的方式和时间。