求助 setAnimationEndCallFunc无效

cocos2dx 版本是 cocos2d-x-3.10
cocsstudio 版本是 v3.10
通过cocosstudio 做的帧动画,里面从0-120帧内包含多个动作;比如0-49帧是走路,50-78帧是攻击,79-120帧是死亡动作;我现在想在第49帧,也就是走路的最后一帧加一个事件

_soldierAction->setAnimationEndCallFunc(StringUtils::format("%d", preAniType), CC_CALLBACK_0(BattleSoldierView::startSoldierMoveAniEx, this));

但是添加后,当动画执行时候,进不了这个startSoldierMoveAniEx()函数;然后看它的源码:通过emitFrameEndCallFuncs(_currentFrame); 调用函数,但是_currentFrame不会等于我刚刚设置那个最后一帧;所以一直执行不了。想问有没有知道的呢?
void ActionTimeline::step(float delta)
{
if (!_playing || _timelineMap.size() == 0 || _duration == 0)
{
return;
}
_time += delta * _timeSpeed;
float deltaCurrFrameTime = std::abs(_time - _currentFrame * _frameInternal);
if (deltaCurrFrameTime < _frameInternal)
return;

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

}

:8: :8: :8: :8:

老帖我自己回下,我后面为关键帧添加帧事件来处理