SPINE骨骼动画setEndListener无效了

3.15.1 JSB模式:

var hero =  sp.SkeletonAnimation.createWithJsonFile(_self.res.anim.dd.spine_json, _self.res.anim.dd.spine_atlas, 0.18);
hero.anchorX = 0.5;
hero.anchorY = 0;
hero.setTimeScale(_self.roleAnimSpeed);
hero.setAnimation(0, "jump", false);
hero.setEndListener(function (animIndex) {
  //这里代码是不执行的
    trace("-------end---animIndex:"+animIndex) 
    if (animIndex == 1) {
        hero.setAnimation(0, "run", true);
    }
});

每次都来这个搞事 官方就不修理一下吗

跟踪源代码发现错误好像是由于错误的trackEnd引起的,如图:

我自己手动设置了动画的trackEnd,可以正确得到回调。
但是这样不合理,初始化trackEnd的时候 初始化得到的值得不对的。
请问在哪里计算得到的?我可以自己去修改一下

我自己做了一个修改:
在AnimationState.c
spTrackEntry* _spAnimationState_trackEntry (spAnimationState* self, int trackIndex, spAnimation* animation, int /boolean/ loop, spTrackEntry* last) {
spTrackEntry* entry = NEW(spTrackEntry);
entry->trackIndex = trackIndex;
entry->animation = animation;
entry->loop = loop;

entry->eventThreshold = 0;
entry->attachmentThreshold = 0;
entry->drawOrderThreshold = 0;

entry->animationStart = 0;
entry->animationEnd = animation->duration;
entry->animationLast = -1;
entry->nextAnimationLast = -1;

entry->delay = 0;
entry->trackTime = 0;
entry->trackLast = -1;
entry->nextTrackLast = -1;
entry->trackEnd = (loop==0)?animation->duration:(float)INT_MAX;//(float)INT_MAX; //修改了这一行 
entry->timeScale = 1;

entry->alpha = 1;
entry->mixAlpha = 1;
entry->mixTime = 0;
entry->mixDuration = !last ? 0 : spAnimationStateData_getMix(self->data, last->animation, animation);
return entry;

}

但是貌似还是有问题,没有解决动画混合的问题,动画到了时间会直接跳到另外一个动画,比较生硬。
以前用的时候是好的,不会跳。可能还有哪里没有修正好。