Java 退出并重新输入应用程序时,LibGDX动画将消失
这个问题我已经有一段时间了,我就是找不到解决办法 我的游戏中有一个角色动画,效果非常好,只是当我退出应用程序并在不关闭它的情况下返回时,它就消失了。我所说的“消失”,并不是说它只是看不见的,因为如果它是看不见的,碰撞检测仍然适用,但它不是 我使用的自定义动画类如下所示:Java 退出并重新输入应用程序时,LibGDX动画将消失,java,android,libgdx,Java,Android,Libgdx,这个问题我已经有一段时间了,我就是找不到解决办法 我的游戏中有一个角色动画,效果非常好,只是当我退出应用程序并在不关闭它的情况下返回时,它就消失了。我所说的“消失”,并不是说它只是看不见的,因为如果它是看不见的,碰撞检测仍然适用,但它不是 我使用的自定义动画类如下所示: public class Animation { private Array<TextureRegion> frames; private float maxFrameTime; privat
public class Animation {
private Array<TextureRegion> frames;
private float maxFrameTime;
private float currentFrameTime;
private int frameCount;
private int frame;
public Animation(TextureRegion region, int frameCount, float cycleTime){
frames = new Array<TextureRegion>();
int frameWidth = region.getRegionWidth() / frameCount;
for(int i=0; i<=frameCount; i++)
frames.add(new TextureRegion(region, i * frameWidth, 0, frameWidth, region.getRegionHeight()));
this.frameCount = frameCount;
maxFrameTime = cycleTime / frameCount;
frame = 0;
}
public void update(float dt){
currentFrameTime +=dt;
if(currentFrameTime > maxFrameTime) {
frame++;
currentFrameTime = 0;
}
if(frame >= frameCount)
frame = 0;
}
public TextureRegion getFrame(){
return frames.get(frame);
}
公共类动画{
专用阵列帧;
私有浮点最大帧时间;
私有浮动帧时间;
私有整数帧计数;
私有int帧;
公共动画(纹理区域、整数帧数、浮点循环时间){
frames=新数组();
int frameWidth=region.getRegionWidth()/frameCount;
对于(int i=0;i maxFrameTime){
frame++;
currentFrameTime=0;
}
如果(帧>=帧计数)
帧=0;
}
公共纹理区域getFrame(){
返回frames.get(frame);
}
}
我听说过一个名为“onPause”的函数,但我不知道如何访问它。即使我可以,我会在上面写些什么来解决我的问题?我使用的不是GDX的“Screen”,而是一个定制的“State”类
编辑:这是我的角色移动代码:
if(isAlive)
birdAnimation.update(dt);
if (position.y > 0 && isAlive) {
velocity.add(0, GRAVITY * dt);
}
velocity.scl(dt);
if(isAlive) {
position.add(MOVEMENT * dt, velocity.y);
velocity.scl(1 / dt);
}
if (position.y < 0)
position.y = 0;
if(position.y >= 1300 - sprite.getHeight())
position.y = 1300 - sprite.getHeight();
if(isAlive)
更新(dt);
if(position.y>0&&isAlive){
速度加(0,重力*dt);
}
速度。症状自评量表(dt);
如果(现场){
位置加(运动*dt,速度.y);
速度。scl(1/dt);
}
如果(位置y<0)
位置y=0;
如果(position.y>=1300-sprite.getHeight())
position.y=1300-sprite.getHeight();
仅在移动设备上运行时会发生这种情况吗?或者当你在桌面上运行它时?@OvidiuDolha在所有设备上都会发生这只是一个猜测,一个非常疯狂的猜测。也许你的角色穿过地板,然后一次次地掉下来。这样做的原因是,当您返回游戏时,所有经过的时间都将在下一帧中用作deltatime。所以你的角色穿过地板。您可以在使用deltatime进行任何计算之前轻松解决此问题。比如:如果(delta>0.05)delta=0.05@莱斯特我不认为这个角色从地上掉下来的可能性存在,因为如果他掉到一定高度以上,我有条件让他死。你确定他没有死吗?无论如何,试着打印出角色的位置,这样你就知道在你回到游戏后,他会发生什么事情。这种情况只在手机上运行时会发生吗?或者当你在桌面上运行它时?@OvidiuDolha在所有设备上都会发生这只是一个猜测,一个非常疯狂的猜测。也许你的角色穿过地板,然后一次次地掉下来。这样做的原因是,当您返回游戏时,所有经过的时间都将在下一帧中用作deltatime。所以你的角色穿过地板。您可以在使用deltatime进行任何计算之前轻松解决此问题。比如:如果(delta>0.05)delta=0.05@莱斯特我不认为这个角色从地上掉下来的可能性存在,因为如果他掉到一定高度以上,我有条件让他死。你确定他没有死吗?无论如何,试着把角色的位置打印到logcat上,这样你就能知道在你回到游戏后他发生了什么