所以我试图在运行两次后停止动画。我正在通过设置播放动画
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;
}
我希望这能有所帮助。。如果我没有正确回答你的问题,请告诉我。