Libgdx assetManager

时间:2014-12-12 09:23:51

标签: android libgdx

我在游戏中使用AssetManager加载2张皮肤。为了显示加载屏幕,我需要一个图像,所以我首先加载它,当皮肤加载时,我使用该图像动画加载屏幕。当我在Android设备上运行游戏时,加载屏幕动画在其中间停止并在加载所有资源后开始播放。那是什么?  1. AssetManager是否阻止某些资产的渲染线程,如果没有,为什么我的简单动画会滞后?  2.如何在没有任何延迟的情况下显示动画加载屏幕?

注意:我确实调用了assetManager.update()。

@Override
public void show() {
    Gdx.input.setInputProcessor(SplashStage.instance());
    assetManager = new AssetManager();
    assetManager.load("skin/loadingSkin", Skin.class);
    assetManager.load("skin/mainSkin", Skin.class);
}
@Override
public void render(float delta) {
    Gdx.gl20.glClearColor(0, 0, 0, 1);
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
    SplashStage.instance().act();
    SplashStage.instance().draw();
    TweenController.instance().getTweenManager().update(delta);
    Table.drawDebug(SplashStage.instance());

    if (assetManager.update()) {
        if (splashComplete) {
            game.setScreen(new GameScreen(game));
        }
    }

    if (assetManager.isLoaded("skin/loadingSkin", Skin.class) && !splashStarted) {
        splashStarted = true;
        splashSkin = assetManager.get("skin/loadingSkin", Skin.class);
        TweenController.instance().registerAccessors();
        loadSplash();
    }

}


private void loadSplash() {
    loadingLabel = new Label("Loading...", splashSkin, ParameterConstants.FONT_SIZE_2);
    loadingLabel.setPosition(Gdx.graphics.getWidth() / 2 - loadingLabel.getWidth() / 2,
                             Gdx.graphics.getHeight() / 2 - loadingLabel.getHeight() * 4);
    loadingLabel.setColor(1, 1, 1, 0);
    SplashStage.instance().addActor(loadingLabel);
    float ratio =  (Gdx.graphics.getWidth() * 2 / 3 / logoImage.getWidth());
    logoImage.setSize(logoImage.getWidth() * ratio, logoImage.getHeight() * ratio);
    logoImage.setPosition(Gdx.graphics.getWidth() / 2 - logoImage.getWidth() / 2,
                          Gdx.graphics.getHeight() / 2 - logoImage.getHeight() / 2);
    SplashStage.instance().addActor(logoImage);

    TweenAnimation.logoAnimation(logoImage, loadingLabel, new AnimationListener() {
        @Override
        public void onComplete() {
            splashComplete = true;
        }
    });
}

0 个答案:

没有答案