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