This abstract class defines easing functions used for smooth animations.

Easing functions determine how animation progress is interpolated over time. They can create effects such as acceleration, deceleration, and bouncing.

You can use predefined easing functions such as Easing.Linear or define custom functions.

Static variables

@:value(function(t:Float) -> @:implicitReturn return t * t * (3 - 2 * t))staticBezier:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t * t * (3 - 2 * t)

@:value(function(t:Float) -> @:implicitReturn return 2.70158 * t * t * t - 1.70158 * t * t)staticInBack:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return 2.70158 * t * t * t - 1.70158 * t * t

@:value(function(t:Float) -> @:implicitReturn return 1 - Easing.OutBounce(1 - t))staticInBounce:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return 1 - Easing.OutBounce(1 - t)

@:value(function(t:Float) -> @:implicitReturn return 1 - Math.sqrt(1 - t * t))staticInCirc:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return 1 - Math.sqrt(1 - t * t)

@:value(function(t:Float) -> @:implicitReturn return t * t * t)staticInCubic:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t * t * t

@:value(function(t:Float) -> @:implicitReturn return t == 0 ? 0 : (t == 1 ? 1 : -Math.pow(2, 10 * t - 10) * Math.sin((t * 10 - 10.75) * (2 * Math.PI) / 4.5)))staticInElastic:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t == 0 ? 0 : (t == 1 ? 1 : -Math.pow(2, 10 * t - 10) * Math.sin((t * 10 - 10.75) * (2 * Math.PI) / 4.5))

@:value(function(t:Float) -> @:implicitReturn return Math.pow(2, 10 * (t - 1)))staticInExpo:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return Math.pow(2, 10 * (t - 1))

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? (2 * t * 2 * t * ((2.5949095 + 1) * 2 * t - 2.5949095)) / 2 : (Math.pow(2 * t - 2, 2) * ((2.5949095 + 1) * (t * 2 - 2) + 2.5949095) + 2) / 2)staticInOutBack:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? (2 * t * 2 * t * ((2.5949095 + 1) * 2 * t - 2.5949095)) / 2 : (Math.pow(2 * t - 2, 2) * ((2.5949095 + 1) * (t * 2 - 2) + 2.5949095) + 2) / 2

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? (1 - Easing.OutBounce(1 - 2 * t)) / 2 : (1 + Easing.OutBounce(2 * t - 1)) / 2)staticInOutBounce:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? (1 - Easing.OutBounce(1 - 2 * t)) / 2 : (1 + Easing.OutBounce(2 * t - 1)) / 2

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (1 - Math.sqrt(1 - 4 * t * t)) : 0.5 * (Math.sqrt(1 - 4 * (t - 1) * (t - 1)) + 1))staticInOutCirc:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (1 - Math.sqrt(1 - 4 * t * t)) : 0.5 * (Math.sqrt(1 - 4 * (t - 1) * (t - 1)) + 1)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1)staticInOutCubic:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1

@:value(function(t:Float) -> @:implicitReturn return t == 0 ? 0 : (t == 1 ? 1 : t < 0.5 ? -Math.pow(2, 20 * t - 10) * Math.sin((20 * t - 11.125) * (2 * Math.PI) / 4.5) / 2 : (Math.pow(2, -20 * t + 10) * Math.sin((20 * t - 11.125) * (2 * Math.PI) / 4.5)) / 2 + 1))staticInOutElastic:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t == 0 ? 0 : (t == 1 ? 1 : t < 0.5 ? -Math.pow(2, 20 * t - 10) * Math.sin((20 * t - 11.125) * (2 * Math.PI) / 4.5) / 2 : (Math.pow(2, -20 * t + 10) * Math.sin((20 * t - 11.125) * (2 * Math.PI) / 4.5)) / 2 + 1)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * Math.pow(2, (20 * t) - 10) : 0.5 * (2 - Math.pow(2, 10 - 20 * t)))staticInOutExpo:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * Math.pow(2, (20 * t) - 10) : 0.5 * (2 - Math.pow(2, 10 - 20 * t))

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t)staticInOutQuad:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (t - 1) * (t - 1) * (t - 1) * (t - 1))staticInOutQuart:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (t - 1) * (t - 1) * (t - 1) * (t - 1)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 16 * t * t * t * t * t : 16 * (t - 1) * (t - 1) * (t - 1) * (t - 1) * (t - 1) + 1)staticInOutQuint:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 16 * t * t * t * t * t : 16 * (t - 1) * (t - 1) * (t - 1) * (t - 1) * (t - 1) + 1

@:value(function(t:Float) -> @:implicitReturn return -0.5 * (Math.cos(Math.PI * t) - 1))staticInOutSine:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return -0.5 * (Math.cos(Math.PI * t) - 1)

@:value(function(t:Float) -> @:implicitReturn return t * t)staticInQuad:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t * t

@:value(function(t:Float) -> @:implicitReturn return t * t * t * t)staticInQuart:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t * t * t * t

@:value(function(t:Float) -> @:implicitReturn return t * t * t * t * t)staticInQuint:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t * t * t * t * t

@:value(function(t:Float) -> @:implicitReturn return 1 - Math.cos(t * (Math.PI / 2)))staticInSine:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return 1 - Math.cos(t * (Math.PI / 2))

@:value(function(t:Float) -> @:implicitReturn return t)staticLinear:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t

@:value(function(t:Float) -> @:implicitReturn return 1 + 2.70158 * Math.pow(t - 1, 3) + 1.70158 * Math.pow(t - 1, 2))staticOutBack:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return 1 + 2.70158 * Math.pow(t - 1, 3) + 1.70158 * Math.pow(t - 1, 2)

@:value(function(t:Float) -> @:implicitReturn return { if (t < 1 / 2.75) return 7.5625 * t * t else if (t < 2 / 2.75) return 7.5625 * (t - 0.545455) * (t - 0.545455) + 0.75 else if (t < 2.5 / 2.75) return 7.5625 * (t - 0.818182) * (t - 0.818182) + 0.9375 else return 7.5625 * (t - 0.954545) * (t - 0.954545) + 0.984375; })staticOutBounce:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return { if (t < 1 / 2.75) return 7.5625 * t * t else if (t < 2 / 2.75) return 7.5625 * (t - 0.545455) * (t - 0.545455) + 0.75 else if (t < 2.5 / 2.75) return 7.5625 * (t - 0.818182) * (t - 0.818182) + 0.9375 else return 7.5625 * (t - 0.954545) * (t - 0.954545) + 0.984375; }

@:value(function(t:Float) -> @:implicitReturn return Math.sqrt(1 - (t - 1) * (t - 1)))staticOutCirc:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return Math.sqrt(1 - (t - 1) * (t - 1))

@:value(function(t:Float) -> @:implicitReturn return (t - 1) * (t - 1) * (t - 1) + 1)staticOutCubic:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return (t - 1) * (t - 1) * (t - 1) + 1

@:value(function(t:Float) -> @:implicitReturn return t == 0 ? 0 : (t == 1 ? 1 : Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * (2 * Math.PI) / 4.5) + 1))staticOutElastic:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t == 0 ? 0 : (t == 1 ? 1 : Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * (2 * Math.PI) / 4.5) + 1)

@:value(function(t:Float) -> @:implicitReturn return 1 - Math.pow(2, -10 * t))staticOutExpo:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return 1 - Math.pow(2, -10 * t)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (Math.pow(2 * t - 1, 2) * ((2.5949095 + 1) * (t * 2 - 1) + 2.5949095) + 1) : 0.5 * (1 + Math.pow(2 * t - 2, 2) * ((2.5949095 + 1) * (t * 2 - 2) + 2.5949095) + 1))staticOutInBack:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (Math.pow(2 * t - 1, 2) * ((2.5949095 + 1) * (t * 2 - 1) + 2.5949095) + 1) : 0.5 * (1 + Math.pow(2 * t - 2, 2) * ((2.5949095 + 1) * (t * 2 - 2) + 2.5949095) + 1)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * Easing.OutBounce(2 * t) : 0.5 * (1 - Easing.OutBounce(2 - 2 * t) + 1))staticOutInBounce:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * Easing.OutBounce(2 * t) : 0.5 * (1 - Easing.OutBounce(2 - 2 * t) + 1)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * Math.sqrt(1 - 4 * (t - 0.5) * (t - 0.5)) : 0.5 * (-Math.sqrt(1 - 4 * (t - 1) * (t - 1)) + 2))staticOutInCirc:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * Math.sqrt(1 - 4 * (t - 0.5) * (t - 0.5)) : 0.5 * (-Math.sqrt(1 - 4 * (t - 1) * (t - 1)) + 2)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * ((2 * t - 1) * (2 * t - 1) * (2 * t - 1) + 1) : 0.5 * ((2 * t - 2) * (2 * t - 2) * (2 * t - 2) + 2))staticOutInCubic:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * ((2 * t - 1) * (2 * t - 1) * (2 * t - 1) + 1) : 0.5 * ((2 * t - 2) * (2 * t - 2) * (2 * t - 2) + 2)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (Math.pow(2, -20 * t) * Math.sin((20 * t - 1.125) * (2 * Math.PI) / 4.5) + 1) : 0.5 * (-Math.pow(2, 20 * (t - 0.5) - 10) * Math.sin((20 * (t - 0.5) - 1.125) * (2 * Math.PI) / 4.5) + 2))staticOutInElastic:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (Math.pow(2, -20 * t) * Math.sin((20 * t - 1.125) * (2 * Math.PI) / 4.5) + 1) : 0.5 * (-Math.pow(2, 20 * (t - 0.5) - 10) * Math.sin((20 * (t - 0.5) - 1.125) * (2 * Math.PI) / 4.5) + 2)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (1 - Math.pow(2, -20 * t)) : 0.5 * (Math.pow(2, 20 * (t - 0.5)) + 1))staticOutInExpo:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (1 - Math.pow(2, -20 * t)) : 0.5 * (Math.pow(2, 20 * (t - 0.5)) + 1)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (2 - 2 * t) * (2 * t) : 0.5 * (1 - (2 - 2 * t) * (2 - 2 * t) + 1))staticOutInQuad:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (2 - 2 * t) * (2 * t) : 0.5 * (1 - (2 - 2 * t) * (2 - 2 * t) + 1)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (1 - (2 * t - 1) * (2 * t - 1) * (2 * t - 1) * (2 * t - 1) + 1) : 0.5 * (1 - (2 * t - 2) * (2 * t - 2) * (2 * t - 2) * (2 * t - 2) + 1))staticOutInQuart:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (1 - (2 * t - 1) * (2 * t - 1) * (2 * t - 1) * (2 * t - 1) + 1) : 0.5 * (1 - (2 * t - 2) * (2 * t - 2) * (2 * t - 2) * (2 * t - 2) + 1)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * ((2 * t - 1) * (2 * t - 1) * (2 * t - 1) * (2 * t - 1) * (2 * t - 1) + 1) : 0.5 * ((2 * t - 2) * (2 * t - 2) * (2 * t - 2) * (2 * t - 2) * (2 * t - 2) + 2))staticOutInQuint:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * ((2 * t - 1) * (2 * t - 1) * (2 * t - 1) * (2 * t - 1) * (2 * t - 1) + 1) : 0.5 * ((2 * t - 2) * (2 * t - 2) * (2 * t - 2) * (2 * t - 2) * (2 * t - 2) + 2)

@:value(function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (Math.sin(2 * t * Math.PI / 2)) : 0.5 * (-Math.cos(2 * (t - 0.5) * Math.PI / 2) + 2))staticOutInSine:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return t < 0.5 ? 0.5 * (Math.sin(2 * t * Math.PI / 2)) : 0.5 * (-Math.cos(2 * (t - 0.5) * Math.PI / 2) + 2)

@:value(function(t:Float) -> @:implicitReturn return (2 - t) * t)staticOutQuad:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return (2 - t) * t

@:value(function(t:Float) -> @:implicitReturn return 1 - (t - 1) * (t - 1) * (t - 1) * (t - 1))staticOutQuart:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return 1 - (t - 1) * (t - 1) * (t - 1) * (t - 1)

@:value(function(t:Float) -> @:implicitReturn return (t - 1) * (t - 1) * (t - 1) * (t - 1) * (t - 1) + 1)staticOutQuint:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return (t - 1) * (t - 1) * (t - 1) * (t - 1) * (t - 1) + 1

@:value(function(t:Float) -> @:implicitReturn return Math.sin(t * (Math.PI / 2)))staticOutSine:(t:Float) ‑> Float = function(t:Float) -> @:implicitReturn return Math.sin(t * (Math.PI / 2))