void ActionTimeline::step(float delta)
{
if (!_playing || _timelineMap.size() == 0 || _duration == 0)
{
return;
}
_time += delta * _timeSpeed;
_currentFrame = (int)(_time / _frameInternal);
// 如果在这里_currentFrame > _endFrame了,而且loop为false,那就会停留在_endFrame之后的帧了?
stepToFrame(_currentFrame);
if(_time > _endFrame * _frameInternal)
{
if(_lastFrameListener != nullptr)
_lastFrameListener();
_playing = _loop;
if(!_playing)
_time = _endFrame * _frameInternal;
else
gotoFrameAndPlay(_startFrame, _endFrame, _loop);
}
}
BTW:再吐个槽
virtual void play(std::string animationName, bool loop);
传值能用const引用就用const引用,这是c++程序员基础知识,你们没有人review代码?
谢谢
