动画跑过头

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代码?

谢谢

第一个问题:

step 没有用作播放吧, 这个接口在 loop==false 的情况下和 gotoFrameAndPause 是一个道理, 如果调用者就是非要用 step 把动画再走 delta,也没有理由把人家拦在 _endFrame (不区分是否大于整个动画最大帧) 不让他去吧。 所以这个问题应该是不存在动画跑过头的问题的。

第二个问题:
这的确是真的有问题 ;(

感谢楼上回复 :slight_smile: