示例(Examples)
示例项目
CLI 附带若干示例项目。rive samples 会打开选择器,把你选中的示例复制到你指定的目录:
| 示例 | 展示内容 |
|---|---|
hello_rive | 最小的布局脚本:每帧绘制一个移动的形状 |
rml_triangle | 最小的 RML 文档:一个画板、一个形状 |
rml_vm_input | 由视图模型数据驱动的 RML,带一个脚本输入 |
rml_split | 同一场景拆分到多个文件:视图模型放在 data/,场景通过 id 引用 |
pointer_reactive | 让场景跟随鼠标:指针 → 视图模型 → 数据绑定 |
input_demo | 脚本中的键盘、文本和手柄事件 |
text_input | 使用 TextInput 组件的可编辑文本字段:占位符、遮罩输入、Tab 遍历 |
keyboard_menu | 无需脚本的键盘菜单:具名按键过滤器、由视图模型触发器驱动状态机 |
cursor_demo | 向窗口请求系统光标:手型、调整大小、I 形光标 |
integrated_titlebar | macOS 红绿灯按钮下的应用外壳:集成标题栏、可拖拽页眉、可调整大小的侧边栏 |
tests_demo | Luau 单元测试,用 --test 运行 |
每个目录本身就是一个完整项目。在无法绘制选择器的环境(例如 CI)中,rive samples 会打印带描述的列表以及一条现成的 cp 命令:
cp -R "$(rive samples --path)/rml_triangle" myproject
rive myproject
无头渲染
--screenshot 会构建项目、在不打开窗口的情况下渲染一帧,并写出 PNG。它不需要登录,因此适合作为 CI 中的检查。
rive myproject --screenshot=out.png # 在任何推进之前
rive myproject --screenshot=out.png --advance=1s # 推进一秒后
rive myproject --screenshot=out.png --viewport=390x844 # 指定尺寸
不带
--advance的捕获是作者设定的静止姿态,而不是动画的开场帧,因为状态机尚未运行。预览请从--advance=1开始。
--screenshot相对当前目录解析路径,而不是项目目录;目录不存在时只会报screenshot failed: <path>。请先创建该目录。
驱动场景
一张静止场景的截图无法说明它是否会对任何事物做出响应。有两个标志可以在捕获前驱动场景。
--data 设置一个视图模型属性。路径相对于绑定到画板的实例,每一段都是属性名:
rive myproject --screenshot=full.png --data=battery/level=100
--pointer 在画板坐标处模拟指针。click 是一次移动、一次按下和一次释放,每步之间隔一帧,因为状态机只在下一次运行时才会看到手势:
rive myproject --screenshot=hover.png --pointer=move@120,60
rive myproject --screenshot=on.png --pointer=click@120,60 --advance=20
两个标志都可以重复,因此你可以设置多个值或播放一串手势。
请给
drag的值加上引号。两点之间的>否则会被 shell 当成重定向:rive myproject --screenshot=scrolled.png --pointer='drag@200,300>200,80:12'
检查响应式布局
布局树和手动摆放的画面在单张截图里看起来完全一样。用两种尺寸拍摄同一文件,看是否有东西移动:
rive myproject --screenshot=wide.png --viewport=900x600
rive myproject --screenshot=narrow.png --viewport=320x700
--viewport 会调整画板本身的尺寸,而不是缩放或裁剪渲染结果。布局会回流到新尺寸中,这才是真正的响应式检查。固定坐标的内容会留在原处,因此没有布局组件的设计在较小视口下看起来像被裁切,在较大视口下则会多出空白。
在 CI 中使用
--verify 会编译所有内容且不写出任何文件。--test 运行项目的 Luau 测试。两者在失败时都以非零退出码退出;--format=json 会在 stdout 输出一个 JSON 对象,日志保留在 stderr:
rive myproject --verify --format=json
rive myproject --test --format=json
每种失败都有各自的退出码,因此流水线可以在不解析输出的情况下分支。参见退出码(Exit Codes)。
发布需要浏览器登录,CI runner 通常做不到。其余模式都可以在 CI 中使用。你可以在 CI 中编写、编译、测试和捕获,然后从已登录的机器上发布。
测量性能
--bench 会构建项目、在不打开窗口的情况下为若干帧计时,并报告推进与渲染统计,以及 WASM 内存增长:
rive myproject --bench=600