Libgdx动画运行循环只有两次

时间:2013-07-21 11:53:40

标签: loops animation 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)永远不会被调用。我想它必须做一些循环动画。有人可以指点我正确的方向吗? 谢谢!

2 个答案:

答案 0 :(得分:3)

发现问题!

在循环中播放动画时,

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

答案 1 :(得分:1)

一切似乎都好。我认为你已初始化

stateTime = 0;

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

时记录stateTime的值
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;
}

我希望这会有所帮助..如果我没有正确地回答您的问题,请告诉我。