[英]Can't figure out how to use isAnimationFinished() method (LibGDX)
I am having some trouble getting my isAnimationFinished()
finished to work in a program I am working on. 我在使用
isAnimationFinished()
完成在我正在处理的程序中时遇到了一些麻烦。 Currently, it seems to just always go into this method. 目前,它似乎总是采用这种方法。 Another issue with the animation is that it almost instantly goes through all the sprites where I would like to prolong each frame for about .25 seconds or so.
动画的另一个问题是,它几乎立即通过所有精灵,我想延长每帧大约.25秒左右。 My relevant code is below, any other questions or help would be appreciated!
我的相关代码如下,任何其他问题或帮助将不胜感激!
Render Call: 渲染电话:
public void render(float delta)
runTime += delta;
world.update(delta);
renderer.render(delta, runTime);
Animation Creation: 动画创作:
TextureRegion[] waterGraphics = { water1, water2, water3 };
waterAnimation = new Animation(0.25f, waterGraphics);
waterAnimation.setPlayMode(Animation.PlayMode.NORMAL);
Animation Draw: 动画画:
if(!waterAnimation.isAnimationFinished(runTime)) {
//System.out.println("1");
batcher.draw(waterAnimation.getKeyFrame(runTime), penguin.getX()+30,
penguin.getY(), penguin.getWidth() / 2.0f,
penguin.getHeight() / 2.0f, penguin.getWidth()*5, penguin.getHeight()*5,
1, 1, penguin.getRotation()); // Don't leave at *5.....
simpleCounter++;
}
Thanks 谢谢
you can use this animation class what i am using for my project.To check for finish you can check if last frame is running by getCurrentFrame()
method. 您可以使用此动画类我正在使用的项目。要检查完成,您可以通过
getCurrentFrame()
方法检查最后一帧是否正在运行。
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
public class Animation {
private Sprite[] frames;
private float time;
private float delay;
private int currentframe;
private int timesplayed;
public Animation(){}
public Animation(TextureRegion[] frames){
this(frames, 1/12);
}
public Animation(TextureRegion[] frames,float delay){
this.setFrames(frames, delay);
}
public Animation(Sprite []a,float delay){
this.frames=a;
this.delay=delay;
time=0;
currentframe=0;
timesplayed=0;
}
public void setFrames(TextureRegion[] frames,float delay){
this.frames=new Sprite[frames.length];
for(int i=0;i<frames.length;i++){
this.frames[i]=new Sprite(frames[i]);
this.frames[i].getTexture().setFilter(TextureFilter.Linear,TextureFilter.Linear);
}
this.delay=delay;
time=0;
currentframe=0;
timesplayed=0;
}
public void update(float dt){
if(delay<=0)return;
time+=dt;
while(time >= delay)step();
}
private void step() {
time-=delay;
currentframe++;
if(currentframe==frames.length)
currentframe=0;
timesplayed++;
}
public Sprite getFrames() {
return frames[currentframe];
}
public float getTime() {
return time;
}
public void setTime(float time) {
this.time = time;
}
public float getDelay() {
return delay;
}
public void setDelay(float delay) {
this.delay = delay;
}
public int getCurrentframe() {
return currentframe;
}
public void setCurrentframe(int currentframe) {
this.currentframe = currentframe;
}
public int getTimesplayed() {
return timesplayed;
}
public void setTimesplayed(int timesplayed) {
this.timesplayed = timesplayed;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.