所以我试图在运行两次后停止动画。 我正在通过设置
来播放动画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)
永远不会被调用。我想它必须做一些循环动画。有人可以指点我正确的方向吗?
谢谢!
答案 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;
}
我希望这会有所帮助..如果我没有正确地回答您的问题,请告诉我。