Easing Functions
Available Easings
Linear
cLib.Ease.Linear -- No easing, constant speed
Quad (Power of 2)
cLib.Ease.InQuad -- Accelerate
cLib.Ease.OutQuad -- Decelerate
cLib.Ease.InOutQuad -- Accelerate then decelerate
Cubic (Power of 3)
cLib.Ease.InCubic
cLib.Ease.OutCubic
cLib.Ease.InOutCubic
Quart & Quint
cLib.Ease.InQuart / OutQuart / InOutQuart
cLib.Ease.InQuint / OutQuint / InOutQuint
Sine
cLib.Ease.InSine -- Smooth start
cLib.Ease.OutSine -- Smooth end
cLib.Ease.InOutSine -- Smooth both
Exponential
cLib.Ease.InExpo -- Fast acceleration
cLib.Ease.OutExpo -- Fast deceleration
cLib.Ease.InOutExpo
Circular
cLib.Ease.InCirc
cLib.Ease.OutCirc
cLib.Ease.InOutCirc
Elastic (Bouncy spring)
cLib.Ease.InElastic
cLib.Ease.OutElastic -- Popular for UI
cLib.Ease.InOutElastic
Back (Overshoot)
cLib.Ease.InBack
cLib.Ease.OutBack -- Popular for popups
cLib.Ease.InOutBack
Bounce
cLib.Ease.InBounce
cLib.Ease.OutBounce -- Bounces at end
cLib.Ease.InOutBounce
Choosing an Easing
| Use Case | Recommended |
|---|
| Fade in/out | OutQuad, OutSine |
| Slide panels | OutCubic, OutQuart |
| Popups | OutBack, OutElastic |
| Progress bars | Linear, InOutQuad |
| Notifications | OutQuad |
| Bouncing effects | OutBounce, OutElastic |
Examples
-- Smooth fade out
cLib.Animate({
from = 255, to = 0,
duration = 0.3,
ease = cLib.Ease.OutQuad,
onUpdate = function(v) panel:SetAlpha(v) end
})
-- Bouncy popup
cLib.Animate({
from = 0, to = 1,
duration = 0.4,
ease = cLib.Ease.OutBack,
onUpdate = function(scale)
panel:SetSize(targetW * scale, targetH * scale)
end
})
-- Elastic notification
cLib.AnimatePos(notif, finalX, finalY, 0.5, cLib.Ease.OutElastic)