关于gotoFrameAndPlay丢帧

actionUS:gotoFrameAndPlay(0,10,false)
在播放动画时,经常在第8帧或者第9帧动作就停止了,少播放1-2帧。
出现几率大概30%吧, 很频繁。

大家有遇到类似情况吗
cocos studio 版本2.2.8
Cocos2d-x 版本3.5

1赞

上demo:2::2::2::2:

我正在遇到这种情况,貌似是每个动画都会少播放一帧,比如明明写的是0-10,结果只会播到第9帧,头痛死了,不知道是bug还是动画使用方法有问题,求大神解答啊!!跪谢!!!:6:

你们的这个版本应该在这个pr修复了, https://github.com/cocos2d/cocos2d-x/pull/12040 同步一下就好。

1赞

这个问题,我们之前也遇到了。
是因为 _currentFrame = (int)(_time / _frameInternal); 这里有精度丢失。

cocos2d-x 3.6:

CCActionTiemline.cpp

void ActionTimeline::step(float delta)
{
if (!_playing || _timelineMap.size() == 0 || _duration == 0)
{
return;
}

_time += delta * _timeSpeed;

if(_time < _endFrame * _frameInternal)
{
    _currentFrame = (int)(_time / _frameInternal);
    stepToFrame(_currentFrame);
}
else
{
    if(_lastFrameListener != nullptr)
        _lastFrameListener();
    
    _playing = _loop;
    if(!_playing)
    {
        _time = _endFrame * _frameInternal;
    _currentFrame = _endFrame;    // 改这一句! (int)(_time / _frameInternal);
        stepToFrame(_currentFrame);
    }
    else
        gotoFrameAndPlay(_startFrame, _endFrame, _loop);
}

}