Libgdx动画只运行两次循环



所以我试图在运行两次后停止动画。我正在通过设置播放动画

Animation blink = new Animation(BLINK_TIME, frames); // parameters are my fields

这就是我获取当前帧的方式:

   if(animate){
      stateTime += Gdx.graphics.getDeltaTime(); //stateTime was initialized to 0
      currentFrame.setRegion(blink.getKeyFrame(stateTime, true)); 
}
else 
   currentFrame.setRegion(defaultRegion);  // again, my own field!

animate字段为true时,这里的一切都很好。现在我想停止动画,这就是我为它所做的:

if(blink.isAnimationFinished(stateTime)){
        blinkTimes++;
        if(blinkTimes>=2)
            animate = false;
    }

问题是,isAnimationFinished(stateTime)永远不会被调用。我想这与循环动画有关。有人能给我指正确的方向吗?谢谢

发现问题!

当循环中播放动画时,isAnimationFinished(stateTime)不起作用。所以,我不得不在Animation.Normal模式下播放它,并在blink.getKeyFrame(stateTime, false)中使用false,告诉Animation类在非循环模式下运行它!

一切似乎都很好。我想你已经初始化了

stateTime = 0;

在渲染方法或更新方法中,首先其值为0,然后将deltaTime添加到其中。最后,它永远不会到达动画完成的位置。我认为当你的

if(animate) // log what is your stateTime

还有一件事

  if(blink.isAnimationFinished(stateTime)){
    blinkTimes++;
     stateTime = 0 ; //----------- because your animation should start from begining else it will complete 2 cycles in no time.
    if(blinkTimes>=2)
        animate = false;
}

我希望这能有所帮助。。如果我没有正确回答你的问题,请告诉我。

最新更新