在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(....);

并且只是这样称呼它,并且因为它在draw函数上使用@Override,我认为绘制动画就足够了,仍然让我在类上使用扩展时感到困惑。

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

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

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

最新更新