Easing
The Easing module implements common easing functions. You can use it with the interpolate() API.
You can find a visualization of some common easing functions at http://easings.net/
Predefined animations
The Easing module provides several predefined animations through the following methods:
- backprovides a basic animation where the object goes slightly back before moving forward
- bounceprovides a bouncing animation
- easeprovides a basic inertial animation
- elasticprovides a basic spring interaction
Standard functions
Three standard easing functions are provided:
The poly function can be used to implement quartic, quintic, and other higher power functions.
Additional functions
Additional mathematical functions are provided by the following methods:
- bezierprovides a cubic bezier curve
- circleprovides a circular function
- sinprovides a sinusoidal function
- expprovides an exponential function
The following helpers are used to modify other easing functions.
- inruns an easing function forwards
- inOutmakes any easing function symmetrical
- outruns an easing function backwards
Example
tsxEasing ,interpolate } from "remotion";constMyVideo :React .FC = () => {constframe =useCurrentFrame ();constinterpolated =interpolate (frame , [0, 100], [0, 1], {easing :Easing .bezier (0.8, 0.22, 0.96, 0.65),extrapolateLeft : "clamp",extrapolateRight : "clamp",});return (<AbsoluteFill style ={{transform : `scale(${interpolated })`,backgroundColor : "red",}}/>);};
tsxEasing ,interpolate } from "remotion";constMyVideo :React .FC = () => {constframe =useCurrentFrame ();constinterpolated =interpolate (frame , [0, 100], [0, 1], {easing :Easing .bezier (0.8, 0.22, 0.96, 0.65),extrapolateLeft : "clamp",extrapolateRight : "clamp",});return (<AbsoluteFill style ={{transform : `scale(${interpolated })`,backgroundColor : "red",}}/>);};
Reference
Methods
step0
jsx
jsx
A stepping function, returns 1 for any positive value of n.
step1
jsx
jsx
A stepping function, returns 1 if n is greater than or equal to 1.
linear
jsx
jsx
A linear function, f(t) = t. Position correlates to elapsed time one to one.
http://cubic-bezier.com/#0,0,1,1
ease
jsx
jsx
A basic inertial interaction, similar to an object slowly accelerating to speed.
http://cubic-bezier.com/#.42,0,1,1
quad
jsx
jsx
A quadratic function, f(t) = t * t. Position equals the square of elapsed time.
http://easings.net/#easeInQuad
cubic
jsx
jsx
A cubic function, f(t) = t * t * t. Position equals the cube of elapsed time.
http://easings.net/#easeInCubic
poly()
jsx
jsx
A power function. Position is equal to the Nth power of elapsed time.
n = 4: http://easings.net/#easeInQuart n = 5: http://easings.net/#easeInQuint
sin
jsx
jsx
A sinusoidal function.
http://easings.net/#easeInSine
circle
jsx
jsx
A circular function.
http://easings.net/#easeInCirc
exp
jsx
jsx
An exponential function.
http://easings.net/#easeInExpo
elastic()
jsx
jsx
A basic elastic interaction, similar to a spring oscillating back and forth.
Default bounciness is 1, which overshoots a little bit once. 0 bounciness doesn't overshoot at all, and bounciness of N > 1 will overshoot about N times.
http://easings.net/#easeInElastic
back()
jsx
jsx
Use with Animated.parallel() to create a basic effect where the object animates back slightly as the animation starts.
bounce
jsx
jsx
Provides a basic bouncing effect.
http://easings.net/#easeInBounce
See an example of how you might use it below
jsx
jsx
bezier()
jsx
jsx
Provides a cubic bezier curve, equivalent to CSS Transitions' transition-timing-function.
A useful tool to visualize cubic bezier curves can be found at http://cubic-bezier.com/
jsx
jsx
in(easing)
jsx
jsx
Runs an easing function forwards.
jsx
jsx
out()
jsx
jsx
Runs an easing function backwards.
jsx
jsx
inOut()
jsx
jsx
jsx
jsx
Makes any easing function symmetrical. The easing function will run forwards for half of the duration, then backwards for the rest of the duration.
Credits
The Easing API is the exact same as the one from React Native and the documentation has been copied over. Credit goes to them for this excellent API.
