如何正确使用AsynchronousAssetLoader加载Animation <textureregion>对象?

时间:2019-05-08 09:22:30

标签: java libgdx game-development

  1. AsynchronousAssetLoader和AssetLoader有什么区别?
  2. 当文档在各自的loadasynch()和loadsync()方法中提到“非OpenGL”资产和“ OpenGL”资产时,这实际上是什么意思?
  3. 如果我使用GitDecoder类中的Animation对象,如何将加载动画正确地合并到我的Assetmanager中?到目前为止,我只是直接从GifDecoder加载动画,然后直接从我的游戏逻辑内部访问动画。
  4. 我已经读到,使用GifDecoder是不切实际的,只有在紧要关头,才应使用它来创建动画。在libgdx中使用动画的“正确”方法是什么?对我来说,这似乎很直观。 GitDecoder类的性能不好吗?

DungeonAssetManager.java

public class DungeonAssetManager  {
    public AssetManager manager;
    public Animation<TextureRegion> playerAnimation;
    public Animation<TextureRegion> enemyAnimation;

    public DungeonAssetManager(){
        manager = new AssetManager();
    }

    public void queueAddDefaultAnimations(){
        manager.load(playerImage, Texture.class);
        manager.load(enemyImage, Texture.class);
        playerAnimation = GifDecoder.loadGIFAnimation(Animation.PlayMode.LOOP, Gdx.files.internal("Textures/Sprites/knight_run.gif").read());
        enemyAnimation = GifDecoder.loadGIFAnimation(Animation.PlayMode.LOOP, Gdx.files.internal("Textures/Sprites/demon_run.gif").read());
    }
...

loadingScreen.java

...
queueAddDefaultAnimations();
queueAddDefaultImages();
queueAddDefaultMusic();
queueAddDefaultSounds();
queueAddDefaultTextures();
parent.assMan.manager.finishLoading();

...

game.java

...
// sb = SpriteBatch
sb.draw(animation.getKeyFrame(elapsed), body.getPosition().x - ((.5f) * width), body.getPosition().y - ((.5f) * height), width, height);
...

0 个答案:

没有答案