Animation math
You can add, subtract and multiply animation values to create more complex animations.
Consider the following example:
Enter and exitimport {spring ,useCurrentFrame ,useVideoConfig } from "remotion"; constframe =useCurrentFrame (); const {fps ,durationInFrames } =useVideoConfig (); constenter =spring ({fps ,frame ,config : {damping : 200, }, }); constexit =spring ({fps ,config : {damping : 200, },durationInFrames : 20,delay :durationInFrames - 20,frame , }); constscale =enter -exit ;
- At the beginning of the animation, the value of
enteris0, it goes to1over the course of the animation. - Before the sequence ends, we create an
exitanimation that goes from0to1. - Subtracting the
exitanimation from theenteranimation gives us the overall state of the animation which we use to animatescale.
Full snippetimportReact from "react"; import {AbsoluteFill ,spring ,useCurrentFrame ,useVideoConfig , } from "remotion"; export constAnimationMath :React .FC = () => { constframe =useCurrentFrame (); const {fps ,durationInFrames } =useVideoConfig (); constenter =spring ({fps ,frame ,config : {damping : 200, }, }); constexit =spring ({fps ,config : {damping : 200, },durationInFrames : 20,delay :durationInFrames - 20,frame , }); constscale =enter -exit ; return ( <AbsoluteFill style ={{justifyContent : "center",alignItems : "center",backgroundColor : "white", }} > <div style ={{height : 100,width : 100,backgroundColor : "#4290f5",borderRadius : 20,transform : `scale(${scale })`,justifyContent : "center",alignItems : "center",display : "flex",fontSize : 50,color : "white", }} > {frame } </div > </AbsoluteFill > ); };