用studio创建的动画循环播放后怎么结束

m_pWindMallAnim->play(“level1”, true);

在回调函数中停止播放动画,但是不起效果

void WindPlayerScene::onWindMallAnimEnd()
{
m_nCurRollNum++;
if (m_nCurRollNum == 6) { //循环播放6次后结束动画
m_pWindMallAnim->stop();

}
}

但是动画还是在一直播放,请问怎么在若干次循环动画后结束动画,引擎是3.4的版本

这的确有这个问题,找到CCActionTimeline::step(float delta) 中203 行,
if(_time < _endFrame * _frameInternal)
改为:
if(_time < (_endFrame + 1) * _frameInternal)

即可。

更加严谨的改法应该是这样的:
void ActionTimeline::step(float delta)
{
if (!_playing || _timelineMap.size() == 0 || _duration == 0)
{
return;
}

_time += delta * _timeSpeed;
const float endtoffset = _time - _endFrame * _frameInternal;

if(endtoffset < _frameInternal)
{
    _currentFrame = (int)(_time / _frameInternal);
    stepToFrame(_currentFrame);
    if (endtoffset > 0 && _lastFrameListener != nullptr) // last frame
        _lastFrameListener();
}
else
{
    _playing = _loop;
    if(!_playing)
    {
        _time = _endFrame * _frameInternal;
        if(_currentFrame != _endFrame)
        {
            _currentFrame = _endFrame;
            stepToFrame(_currentFrame);
            if(_lastFrameListener != nullptr)  // last frame
                _lastFrameListener();
        }
    }
    else
        gotoFrameAndPlay(_startFrame, _endFrame, _loop);
}

}