曲线描绘
先画坐标轴,再逐条从左到右画线,线头发光;短的那条提前停住并标出终点。
实时循环 · 7 秒 · 1920×1080 · 24 fps
参数
| 参数 | 类型 | 作用 |
|---|---|---|
| value / from / decimals / unit | number / string | counter:落定的数字、起始值、小数位、数字后的单位 |
| label | string | counter:数字上方的一句短话;bars / curve:图表标题 |
| items | [{label, value, display?}] | tubes(2–4)/ bars(2–5):各项数值;display 替换落定后显示的数字 |
| ratio / max / highlight | string | false / number / index | tubes:砸在最后一根管顶的倍数(默认 ×末项/首项);满刻度;bars:主角那一条 |
| gauges | [{label, value 0..1, zone?}] | gauges:1–3 个表盘;指针摆到 value,zone 是目标弧段 |
| one / many / icon | {label} / {label, count} / icon | pictogram:左边的一个、右边的许多(最多 400)和单位图标 |
| series / xLabel / yLabel | [{label, values[], highlight?}] | curve:1–3 条曲线;短的那条提前停住并标出终点 |
| motion_ms | ms | 主运动的时长(滚动、灌注、生长、计数、描线) |
| ease | {"<move>": ease} | 重调任一具名动作(见本条的动作表):预设名("out-expo")、三次贝塞尔 [x1, y1, x2, y2]、{spring: [频率, 阻尼]} 或 {trapezoid: [加速, 减速]}。动作名或曲线写错会直接报错,绝不悄悄退回默认。参考片里量出来的动作(复刻工作台 measure/*.json,按帧号存)不用手工转换:MV.fitEase(doc, "x", {from: 133, to: 142}) 或 motion-fit <文件> --measure x --from 133 --to 142 --ease 直接得到曲线 |
| camera | {focal?, x?, y?, z?} | 场景相机:平移 x / y、推进 z,可写数字或关键帧 [[毫秒, 值, 缓动?], ...];不同深度的物体移动量不同(真实视差)。焦距默认 1800 |
| brand | hex默认: #6B5BFF | 网站的品牌色;组件由它推出强调色(在舞台上对比度 ≥ 3:1)、面板色和文字色 |
| stage | "dark" | "light"默认: "dark" | 组件所在的舞台:深色或浅色 |
| display | font stem默认: "Inter-Bold" | 标题字体;在调用里写出它的名字,运行时才会加载 |
| body | font stem默认: "Inter-Regular" | 界面 / 正文字体;在调用里写出它的名字,运行时才会加载 |
| start_ms | ms默认: 300 | 组件开始的时间,镜头内的毫秒数 |
| background | boolean默认: false | 画出舞台背景(关闭时透明,叠在镜头自己的背景上) |
| place | {x, y, w, h, z?} | 组件在镜头布局里的位置:把它 1920x1080 的构图缩放进这个舞台矩形(居中、保持比例);z 决定组件之间的前后。默认整个舞台 |
动作与缓动曲线
每个动作都有自己的缓动。用 ease: { "<动作>": <曲线> } 重调其中一个,可写曲线名或贝塞尔手柄。
| 动作 | 曲线 | 作用 |
|---|---|---|
| axes.draw | out-cubic | 坐标轴描出 |
| draw | in-out-sine | 每条曲线从左到右描出 |
| pin.pop | overshoot | 曲线终点的标签弹出 |
本演示的取值
| variant | "curve" |
|---|---|
| xLabel | "时间" |
| yLabel | "观众" |
| series | [{"label":"没有开场钩子","values":[10,6,4,3,2.6]},{"label":"有开场钩子","values":[10,9.4,9,8.7,8.5,8.4,8.3,8.2,8.2],"highlight":true}] |
| brand | #6B5BFF |
| stage | light |
<script src="/vendor/motion-vocab.js"></script>
MV.bind("s3", MV.data(el, {"variant":"curve","xLabel":"时间","yLabel":"观众","series":[{"label":"没有开场钩子","values":[10,6,4,3,2.6]},{"label":"有开场钩子","values":[10,9.4,9,8.7,8.5,8.4,8.3,8.2,8.2],"highlight":true}],"brand":"#6B5BFF","stage":"light","display":"NotoSansSC-Bold","body":"NotoSansSC-Regular"}));在发布片里什么时候用
随时间的变化:增长、平稳的平台、一条线在另一条停下的地方继续走。
为什么有效
按时间顺序描线,讲出图里的故事;发光的线头告诉观众「现在」在哪里。
不要和这些一起用
- 超过三条线
- brief 没描述过的曲线形状
在片中的作用
自然时长
4.0–7.0 秒