diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java
index 9cbaa732d..f0f7692cc 100644
--- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java
+++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java
@@ -1012,16 +1012,20 @@ public class AnimationState {
nextAnimationLast = animationLast;
}
- /** Uses {@link #getTrackTime()} to compute the animationTime, which is between {@link #getAnimationStart()}
- * and {@link #getAnimationEnd()}. When the trackTime is 0, the animationTime is equal to the
- * animationStart time. */
+ /** Uses {@link #getTrackTime()} to compute the animationTime. When the trackTime is 0, the
+ * animationTime is equal to the animationStart time.
+ *
+ * The animationTime is between {@link #getAnimationStart()} and {@link #getAnimationEnd()}, except if this
+ * track entry is non-looping and {@link #getAnimationEnd()} is >= to the animation {@link Animation#duration}, then
+ * animationTime continues to increase past {@link #getAnimationEnd()}. */
public float getAnimationTime () {
if (loop) {
float duration = animationEnd - animationStart;
if (duration == 0) return animationStart;
return (trackTime % duration) + animationStart;
}
- return Math.min(trackTime + animationStart, animationEnd);
+ float animationTime = trackTime + animationStart;
+ return animationEnd >= animation.duration ? animationTime : Math.min(animationTime, animationEnd);
}
/** Multiplier for the delta time when this track entry is updated, causing time for this animation to pass slower or