之前说到spine在end回调里面调用setAnimation会蹦,那个是现象之一。又发现一个更具体的原因。
setAnimation之后,会调用到getCurrent函数:
spTrackEntry* spAnimationState_setAnimation (spAnimationState* self, int trackIndex, spAnimation* animation, int/*bool*/loop, int/*bool*/ inCallback) {
_spAnimationState* internal = SUB_CAST(_spAnimationState, self);
spTrackEntry* entry;
spTrackEntry* current = _spAnimationState_expandToIndex(self, trackIndex);
if (current) _spAnimationState_disposeAllEntries(self, current->next);
entry = internal->createTrackEntry(self);
entry->next = NULL;
entry->animation = animation;
entry->loop = loop;
entry->endTime = animation->duration;
_spAnimationState_setCurrent(self, trackIndex, entry,inCallback); //就是这里!!!