让精灵动起来

来源:互联网 发布:php培训学校 编辑:程序博客网 时间:2024/05/05 11:09
我们来看test代码里面的AnimationTest.java




texture = new Texture(Gdx.files.internal("data/walkanim.png"));
TextureRegion[] leftWalkFrames = TextureRegion.split(texture, 64, 64)[0];
TextureRegion[] rightWalkFrames = new TextureRegion[leftWalkFrames.length];
for (int i = 0; i < rightWalkFrames.length; i++) {
TextureRegion frame = new TextureRegion(leftWalkFrames[i]);
frame.flip(true, false);
rightWalkFrames[i] = frame;
}
leftWalk = new Animation(0.25f, leftWalkFrames);
rightWalk = new Animation(0.25f, rightWalkFrames);

获取图资源,然后构造动画。new Animation(0.25f, leftWalkFrames);

public void render () {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
for (int i = 0; i < cavemen.length; i++) {
Caveman caveman = cavemen[i];
TextureRegion frame = caveman.headsLeft ? leftWalk.getKeyFrame(caveman.stateTime, true) : rightWalk.getKeyFrame(
caveman.stateTime, true);
batch.draw(frame, caveman.pos.x, caveman.pos.y);
}
batch.end();


for (int i = 0; i < cavemen.length; i++) {
cavemen[i].update(Gdx.graphics.getDeltaTime());
}


fpsLog.log();
}
cavemen[i].update(Gdx.graphics.getDeltaTime()); 函数进行更新时间戳和位置坐标
leftWalk.getKeyFrame(caveman.stateTime, true) 依据时间更新获取第几帧动画,
batch.draw(frame, caveman.pos.x, caveman.pos.y); 描画出来。
这样看起来,动画也是非常简单的了。
frame.flip(true, false); 接口为翻转属性。
0 0
原创粉丝点击