0

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

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当该字段为真时,直到这里一切正常。现在我想停止动画,这就是我所做的:

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

问题是,isAnimationFinished(stateTime)永远不会被调用。我想它必须与循环动画有关。有人可以指出我正确的方向吗?谢谢!

4

2 回答 2

3

发现问题!

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

于 2013-07-22T09:27:33.847 回答
1

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

stateTime = 0;

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

if(animate) // log what is your stateTime

还有 1 件事

  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;
}

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

于 2013-07-21T14:14:50.973 回答