首页 > 解决方案 > 在 java libgdx 上实现一个动画类

问题描述

我正在创建一个 2D 游戏,我想创建一个类来处理场景中存在的所有动画,而不是玩家动画或 npc,而只是固定在场景中的动画。基本的想法是,我有一个背景,然后是一些固定位置的动画。

这是我到目前为止创建的

public class Animation extends MyGdxGame{

    private Animation<TextureRegion> animaction; 
    private Texture walkSheet;
    private SpriteBatch spriteBatch;

    private float stateTime;
    private float x,y,velocidade;
    private final MyGdxGame app;


    public Animation (final MyGdxGame app, String file, int col, int lin, float x,float y, float vel) {
        this.x=x;
        this.y=y;
        this.velocidade=velocidade;
        this.app = app;

        walkSheet = new Texture(Gdx.files.internal(file));


        TextureRegion[][] tmp = TextureRegion.split(walkSheet, 
                walkSheet.getWidth() / col,
                walkSheet.getHeight() / lin);


        TextureRegion[] walkFrames = new TextureRegion[col * lin];
        int index = 0;
        for (int i = 0; i < lin; i++) {
            for (int j = 0; j < col; j++) {
                walkFrames[index++] = tmp[i][j];
            }
        }


        animaction = new Animation<TextureRegion>(0.025f, walkFrames);


        spriteBatch = new SpriteBatch();
        stateTime = 0f;



    }

     @Override
    public void render() {

        stateTime +=  Gdx.graphics.getDeltaTime();


        TextureRegion currentFrame = animaction.getKeyFrame(stateTime, true);

        app.batch.draw(currentFrame, x, y);



    }

     @Override
    public void dispose() { 
        spriteBatch.dispose();
        walkSheet.dispose();
    }

}

场景和动画从头开始加载,我的问题是我的动画没有被绘制,加载动画这是我调用类的方式

for (int i = 0;i<number_of_animations;ii++)
    animation = new Animation(....);

并且通过这种方式调用它,因为它使用函数@Override上的,draw我认为它足以绘制动画,仍然让我在类上使用扩展时感到很困惑。

实现这一点的最佳方法是什么?

标签: javaclasslibgdx

解决方案


我的解决方案是,删除 extends MyGdxGame@Override注释,然后将其声明为数组

for...
{
    animation[count] = new Animacao(...);
    count++;
}

推荐阅读