mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-22 10:16:01 +08:00
Clear the track before calling end on the listener.
This commit is contained in:
parent
173bd1c8e1
commit
211f82fedd
@ -125,10 +125,10 @@ public class AnimationState {
|
|||||||
var current:TrackEntry = _tracks[trackIndex];
|
var current:TrackEntry = _tracks[trackIndex];
|
||||||
if (!current) return;
|
if (!current) return;
|
||||||
|
|
||||||
|
_tracks[trackIndex] = null;
|
||||||
|
|
||||||
if (current.onEnd != null) current.onEnd(trackIndex);
|
if (current.onEnd != null) current.onEnd(trackIndex);
|
||||||
onEnd.invoke(trackIndex);
|
onEnd.invoke(trackIndex);
|
||||||
|
|
||||||
_tracks[trackIndex] = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function expandToIndex (index:int) : TrackEntry {
|
private function expandToIndex (index:int) : TrackEntry {
|
||||||
|
|||||||
@ -174,10 +174,11 @@ void spAnimationState_clearTrack (spAnimationState* self, int trackIndex) {
|
|||||||
current = self->tracks[trackIndex];
|
current = self->tracks[trackIndex];
|
||||||
if (!current) return;
|
if (!current) return;
|
||||||
|
|
||||||
|
self->tracks[trackIndex] = 0;
|
||||||
|
|
||||||
if (current->listener) current->listener(self, trackIndex, ANIMATION_END, 0, 0);
|
if (current->listener) current->listener(self, trackIndex, ANIMATION_END, 0, 0);
|
||||||
if (self->listener) self->listener(self, trackIndex, ANIMATION_END, 0, 0);
|
if (self->listener) self->listener(self, trackIndex, ANIMATION_END, 0, 0);
|
||||||
|
|
||||||
self->tracks[trackIndex] = 0;
|
|
||||||
if (current->previous) _spTrackEntry_dispose(current->previous);
|
if (current->previous) _spTrackEntry_dispose(current->previous);
|
||||||
_spTrackEntry_disposeAll(current);
|
_spTrackEntry_disposeAll(current);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -138,10 +138,10 @@ namespace Spine {
|
|||||||
TrackEntry current = tracks[trackIndex];
|
TrackEntry current = tracks[trackIndex];
|
||||||
if (current == null) return;
|
if (current == null) return;
|
||||||
|
|
||||||
|
tracks[trackIndex] = null;
|
||||||
|
|
||||||
current.OnEnd(this, trackIndex);
|
current.OnEnd(this, trackIndex);
|
||||||
if (End != null) End(this, trackIndex);
|
if (End != null) End(this, trackIndex);
|
||||||
|
|
||||||
tracks[trackIndex] = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private TrackEntry ExpandToIndex (int index) {
|
private TrackEntry ExpandToIndex (int index) {
|
||||||
|
|||||||
@ -1038,10 +1038,10 @@ spine.AnimationState.prototype = {
|
|||||||
var current = this.tracks[trackIndex];
|
var current = this.tracks[trackIndex];
|
||||||
if (!current) return;
|
if (!current) return;
|
||||||
|
|
||||||
|
this.tracks[trackIndex] = null;
|
||||||
|
|
||||||
if (current.onEnd != null) current.onEnd(trackIndex);
|
if (current.onEnd != null) current.onEnd(trackIndex);
|
||||||
if (this.onEnd != null) this.onEnd(trackIndex);
|
if (this.onEnd != null) this.onEnd(trackIndex);
|
||||||
|
|
||||||
this.tracks[trackIndex] = null;
|
|
||||||
},
|
},
|
||||||
_expandToIndex: function (index) {
|
_expandToIndex: function (index) {
|
||||||
if (index < this.tracks.length) return this.tracks[index];
|
if (index < this.tracks.length) return this.tracks[index];
|
||||||
|
|||||||
@ -137,11 +137,12 @@ public class AnimationState {
|
|||||||
TrackEntry current = tracks.get(trackIndex);
|
TrackEntry current = tracks.get(trackIndex);
|
||||||
if (current == null) return;
|
if (current == null) return;
|
||||||
|
|
||||||
|
tracks.set(trackIndex, null);
|
||||||
|
|
||||||
if (current.listener != null) current.listener.end(trackIndex);
|
if (current.listener != null) current.listener.end(trackIndex);
|
||||||
for (int i = 0, n = listeners.size; i < n; i++)
|
for (int i = 0, n = listeners.size; i < n; i++)
|
||||||
listeners.get(i).end(trackIndex);
|
listeners.get(i).end(trackIndex);
|
||||||
|
|
||||||
tracks.set(trackIndex, null);
|
|
||||||
freeAll(current);
|
freeAll(current);
|
||||||
if (current.previous != null) trackEntryPool.free(current.previous);
|
if (current.previous != null) trackEntryPool.free(current.previous);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -157,13 +157,13 @@ function AnimationState.new (data)
|
|||||||
local current = self.tracks[trackIndex]
|
local current = self.tracks[trackIndex]
|
||||||
if not current then return end
|
if not current then return end
|
||||||
|
|
||||||
if current.onEnd then current.onEnd(trackIndex) end
|
|
||||||
if self.onEnd then self.onEnd(trackIndex) end
|
|
||||||
|
|
||||||
self.tracks[trackIndex] = nil
|
self.tracks[trackIndex] = nil
|
||||||
if trackIndex == self.trackCount - 1 then
|
if trackIndex == self.trackCount - 1 then
|
||||||
self.trackCount = self.trackCount - 1
|
self.trackCount = self.trackCount - 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if current.onEnd then current.onEnd(trackIndex) end
|
||||||
|
if self.onEnd then self.onEnd(trackIndex) end
|
||||||
end
|
end
|
||||||
|
|
||||||
function self:setAnimationByName (trackIndex, animationName, loop)
|
function self:setAnimationByName (trackIndex, animationName, loop)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user