Android Libgdx资产管理器

Android Libgdx资产管理器,android,libgdx,Android,Libgdx,我在游戏中使用AssetManager加载2张皮肤。要显示加载屏幕,我需要一个图像,所以我首先加载它,当皮肤加载时,我使用该图像为加载屏幕设置动画。当我在Android设备上运行游戏时,加载屏幕动画会停在中间,并在所有资产加载后开始播放。那是什么呢? 1.AssetManager是否会阻止某些资源的渲染线程?如果不是,为什么我的简单动画会延迟? 2.如何在没有任何延迟的情况下显示动画加载屏幕 注意:我确实调用了assetManager.update @Override public void s

我在游戏中使用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;
        }
    });
}

请添加用于加载屏幕的代码。此外,如果加载屏幕仅加载2个皮肤,则可能确实是定义的行为。我认为AssetManager只是跟踪已经加载的资产的进度。所以,如果您只有两项资产,那么它将只有三个步骤:0%、50%和100%。由于您可能会以100%切换屏幕,所以在更改屏幕之前,50%可能是您看到的唯一状态。这是我的代码。Tween动画在不同的线程中更改角色的尺寸。我想这可能有什么关系。我在一个游戏线程中制作了简单的动画,但它也停止了。所以我认为这是因为AssetManager以某种方式阻止了渲染线程。