Skip to main content

动画数学

你可以对动画数值进行加法、减法和乘法运算,以创建更复杂的动画。 请考虑以下示例:

🌐 You can add, subtract and multiply animation values to create more complex animations.
Consider the following example:

Enter and exit
import { spring, useCurrentFrame, useVideoConfig } from "remotion"; const frame = useCurrentFrame(); const { fps, durationInFrames } = useVideoConfig(); const enter = spring({ fps, frame, config: { damping: 200, }, }); const exit = spring({ fps, config: { damping: 200, }, durationInFrames: 20, delay: durationInFrames - 20, frame, }); const scale = enter - exit;
  • 在动画开始时,enter 的值是 0,在动画过程中,它会变为 1
  • 在序列结束之前,我们创建一个从 01exit 动画。
  • enter 动画中减去 exit 动画可以得到动画的整体状态,我们用它来动画化 scale
Full snippet
import React from "react"; import { AbsoluteFill, spring, useCurrentFrame, useVideoConfig, } from "remotion"; export const AnimationMath: React.FC = () => { const frame = useCurrentFrame(); const { fps, durationInFrames } = useVideoConfig(); const enter = spring({ fps, frame, config: { damping: 200, }, }); const exit = spring({ fps, config: { damping: 200, }, durationInFrames: 20, delay: durationInFrames - 20, frame, }); const scale = 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> ); };