libgdx:资产管理器块屏幕ui

时间:2014-10-29 15:00:58

标签: android libgdx

我使用AssetManager加载游戏中的所有资源。 我有显示加载进度的问题或改为进展我尝试在我的LoadingScreen渲染方法中使用此代码仅设置背景颜色。

    Gdx.gl.glClearColor(0.431f, 0.792f, 0.808f, 0xff / 255.0f);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

Everiting加载得很好但是,在加载时我得到黑色屏幕而不是glClearColor中的颜色设置。实现像this示例

这样的加载栏时也会发生同样的情况

这是Assests

的一部分
    public class Assets implements Disposable, AssetErrorListener {

        public static final Assets instance = new Assets();
      .
      .
        public void init (AssetManager assetManager) {
            this.assetManager = assetManager;
        // set asset manager error handler
        assetManager.setErrorListener(this);
        // load texture atlas
        assetManager.load(Constants.TEXTURE_ATLAS_OBJECTS, TextureAtlas.class);
     .
     .
        TextureAtlas atlas = assetManager.get(Constants.TEXTURE_ATLAS_OBJECTS);
     .


   }  
     .


}

以下是我LoadingScreen的简单代码:

    @Override
    public void show() {
        manager = new AssetManager();

        Assets.instance.init(manager);
   }

    public void render(float deltaTime) {
        Gdx.gl.glClearColor(0.431f, 0.792f, 0.808f, 0xff / 255.0f);//light blue
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        if (manager.update()) {
            ScreenTransition transition = ScreenTransitionFade.init(0.5f);
            game.setScreen(new HomeScreen(game), transition);
        }
}

这里我预计在加载资产时会显示淡蓝色的空白屏幕,但是我得到了黑屏。

我猜有些代码会阻塞主线程,但我不知道如何解决这个问题。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

确保您知道何时调用Screen.show()Screen.render(float delta)

Screen.show():在您拨打Game.setScreen()时被呼叫。

Screen.render(float delta):在 Screen.show()完成后连续调用。因此,在加载过程中Screen.show()尚未完成,并显示默认背景(黑色)。

为了避免单独的线程会很好。这里有AssetManager异步加载内容。现在我们只能正确使用它:

在致电AssetManager.load(<your assets>) 之前致电Game.setScreen(<Loading Screen>) 。然后直接调用LoadingScreen.render(float delta),您就会看到自己的背景。要检查加载是否完成,您可以使用AssetManager.update(),如果已完成则返回true,否则返回false。