[ PROMPT_NODE_27764 ]
Motion Canvas 生成器
[ SKILL_DOCUMENTATION ]
# Motion Canvas 中的生成器函数
生成器函数是描述 Motion Canvas 动画的核心构建块。它们使用 JavaScript 的 `function*` 语法和 `yield*` 来控制动画流程。
## 基础生成器函数
typescript
import {makeScene2D} from '@motioncanvas/2d/lib/scenes';
export default makeScene2D(function* (view) {
// 动画代码写在这里
yield* waitFor(1); // 等待 1 秒
});
## 执行动画 (Yielding Animations)
使用 `yield*` 来执行动画并等待其完成:
typescript
export default makeScene2D(function* (view) {
const circle = createRef();
view.add();
// 这将等待动画完成
yield* circle().size(200, 1.5);
// 这将在前一个动画完成后执行
yield* circle().fill('#e6a700', 1);
});
## 并行动画
使用 `all()` 同时运行多个动画:
typescript
import {all} from '@motioncanvas/core/lib/flow';
export default makeScene2D(function* (view) {
const circle = createRef();
const rect = createRef();
view.add(
>
);
// 两个动画同时运行
yield* all(
circle().position.x(0, 1),
rect().position.x(0, 1),
);
});
## 顺序流程
按顺序链接动画:
typescript
export default makeScene2D(function* (view) {
const circle = createRef<Circle>();
view.add();
// 一个接一个地执行
yield* circle().size(200, 1);
yield* circle().position.x(300, 1);
yield* circle().fill('#e6a700', 1);
yield* circle().size(100, 1);
});
## 资源
- [Motion Canvas 流程文档](https://motioncanvas.io/docs/flow/)
- [JavaScript 生成器 MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator)