java - 在 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
我认为它足以绘制动画,仍然让我在类上使用扩展时感到很困惑。
实现这一点的最佳方法是什么?
解决方案
我的解决方案是,删除 extends MyGdxGame
和@Override
注释,然后将其声明为数组
for...
{
animation[count] = new Animacao(...);
count++;
}
推荐阅读
- google-chrome - Puppeteer 在全速运行(非无头)时在所有网站上始终为黑色
- python - 对 Keras 中的可训练参数进行排序
- c# - 获取最大绝对值及其其他相关值
- python - Python倒计时序列
- apache-spark - 为什么我得到执行者拒绝连接?
- angular - 在 npm fullcalendar 中动态加载事件
- node.js - Aysnc v3.1.0 => queue.push 在没有之后什么都不做。任务完成(定义并发)
- python-3.x - 如何在 python 数据框中切片列表值?
- html - 如何让我的导航栏跨越整个 div 的宽度
- swift - Xcode 方案中的启动参数