java - libGDX manager.update() 阻塞动画
问题描述
我在我的项目中成功实现了一个 gifdecoder,并为它编写了一个 gifloader 以将其与资产管理器一起使用。我可以在资产管理器中加载 gif,也可以绘制它。但是每次我尝试使用 manager.update() 在我的资产管理器中加载 gif 时,我都无法再绘制动画了,只能绘制非动画纹理。
这是我的代码,希望有人有想法
public class Load implements Screen {
private SpriteBatch batch;
private Animation<TextureRegion> loadingAnimation;
private TextureAtlas atlasLoading = new TextureAtlas(Gdx.files.internal("atlas/loadingAnimation.atlas"));
float stateTime;
MainExecute lr;
public FileHandleResolver resolver = new InternalFileHandleResolver();
public AssetManager manager = new AssetManager();
private final Animation animation = GifDecoder.loadGIFAnimation(Animation.PlayMode.NORMAL, Gdx.files.internal("data/loading.gif").read());
public Load(MainExecute lr){
this.lr = lr;
}
public Texture Bg1;
@Override
public void show() {
Bg1 = new Texture(Gdx.files.internal("bggamescreen.png"));
batch = new SpriteBatch();
manager.setLoader(GIF.class,new Gifloader(resolver));
manager.load("data/BackgroundAnim.gif",GIF.class);
stateTime = 0f;
}
@Override
public void render(float delta) {
if (manager.update())
{
lr.setScreen(new MainMenu(lr));
}
stateTime += delta;
// loadingAnimation = new Animation<TextureRegion>(0.5f, atlasLoading.findRegions("loading"),Animation.PlayMode.LOOP);
TextureRegion currentFrame = (TextureRegion) animation.getKeyFrame(stateTime, true);
batch.begin();
batch.draw(Bg1,0,0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
batch.draw(currentFrame, 0, 0, 200, 200);
batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
解决方案
奇怪的代码,您在完成加载之前正在绘制动画。你需要等待加载你的动画,试试这样。
if (manager.update())
{
loadingAnimation = new Animation<TextureRegion>(0.5f, atlasLoading.findRegions("loading"),Animation.PlayMode.LOOP);
TextureRegion currentFrame = (TextureRegion) animation.getKeyFrame(stateTime, true);
lr.setScreen(new MainMenu(lr));
}
推荐阅读
- django - Django Rest Framework:如何创建和更新多对多字段?
- sql - 具有特定概率的 SQL/雪花采样
- java - 从中移动文件后删除目录[Java]
- windows - 在 Assembly 中调用过程时是否需要使用方括号?
- r - 使用 assign() 处理范围界定问题是否有问题?
- extjs - Sencha WebtestIt - 浏览器启动 url 'data:,'?
- python - Groupby 不显示它的计数
- javascript - 有没有办法让 Enter 和 Shift + Enter 在 TinyMCE 中以相同的方式工作?
- python - 创建变量依赖于另一个变量
- python - 生成随机 txt 文件的 Python 应用程序:AttributeError:“str”对象没有属性“write”