【免费下载链接】avocado
An interaction design toolbox
Avocado 是由 IDEO 打造的开源交互设计工具箱(interaction design toolbox),基于 Facebook 的 Origami/Quartz Composer 框架,让设计师不写一行代码就能制作可交互原型。其中最实用的隐藏能力,就是Global Boolean / Global String 全局补丁:把数值"存"进全局,在同一组合的任何位置、甚至另一个同时运行的组合里随时"取"出来——这就是跨组合共享数据的核心机制。
本文带你从零看懂这 4 个补丁的工作原理,并给出 3 种跨组合共享数据的具体玩法。🥑
什么是 Global Value 补丁?
官方 README 对它的定义非常直白:
With Avocado you can save values to be retrieved anywhere in the composition or that can be accessed by another composition running at the same time.
也就是说,全局值有两大作用域:
- 📌同一组合内:A 处保存,B 处读取,无需再拉线传递;
- 🚀跨组合:两个 .qtz 组合同时运行时,一个保存、另一个读取,实现组合间通信。
它由 4 个补丁组成,分成"布尔"和"字符串"两对:
| 补丁 | 文件位置 | 说明 |
|---|---|---|
| Save Global Boolean | Avocado/Save Global Boolean.qtz | 保存一个布尔值(开/关) |
| Retrieve Global Boolean | Avocado/Retrieve Global Boolean.qtz | 按名字取回布尔值 |
| Save Global String | Save Global String.plugin | 保存任意字符串 |
| Retrieve Global String | Retrieve Global String.plugin | 按名字取回字符串 |
前两者是现成的 .qtz 组合(直接拖进画布就能用),后两者是 C 语言编译的 Quartz Composer 插件(.plugin),Boolean 补丁内部正是复用了它们。
Avocado 提供的全部交互组件(拖拽、轮播、拨盘等)演示效果见下,全局值补丁常与它们配合使用:

3 种跨组合共享数据的方式
方式一:用 Global Boolean 做"全局开关"
这是最简单的跨组合通信——比如组合 A 里点击一个按钮,组合 B 里的图层立刻变色。
原理拆解(查看 Retrieve Global Boolean.qtz 的 plist 结构可知):
Save Global Boolean接收Value(布尔)和Name(键名)两个输入,内部调用 Save Global String 插件,把布尔转成字符串"1"或"0"存进全局键;Retrieve Global Boolean输入Name,内部调用 Retrieve Global String 插件取回字符串,再经一段 JavaScript 判断:等于"1"输出true,否则输出false;- 它还提供一个Enable输入口,可随时打开/关闭这条读取链路。
使用要点:
- 两边的Name 必须完全一致,且官方说明特别强调Name 必须非空;
- 两个组合都要同时处于运行状态才能通信;
- 适合做"状态同步":登录与否、深色模式开关、动画是否启用等。
方式二:用 Global String 传递任意文本
Boolean 只能传开/关,字符串补丁才是真正的"数据管道"——键盘输入的文本、设备编号、任意消息都能传。
- 发送端:
Save Global String插件接收Name + Value,每收到一个新字符串就更新全局键; - 接收端:
Retrieve Global String插件按Name订阅,随时吐出最新值; - 仓库里自带一个现成案例:Examples/Utilities/Global String.qtz,打开即可研究标准接法。
典型场景:一个组合运行 iOS Keyboard.qtz 虚拟键盘,用户输入的文字通过 Global String 实时同步到另一个组合的聊天界面——跨组合也能"对话"了。⌨️
方式三:字符串编码数字,扩展数据类型
Avocado 的全局值只原生支持 Boolean 和 String 两种类型,但任何数据都可以"编码"成字符串再传输:
- 数字:把数值转成字符串(数字本身就是文本)保存,接收端用工具补丁 String to Number.qtz 还原回数字;
- 多路复用:多个数字拼接(如
x;y格式)存进一个键,接收端用 Disaggregate Value.plugin 拆回多个值——仓库里的 Aggregate Values.qtz 和它本来就是配套的; - 开关组:一个字符串里放
101这样的位编码,接收端用 Invert.qtz 等工具补丁解读。
💡 小技巧:
Save Global Boolean本质就是"布尔→字符串"的封装版,理解它之后,你完全可以照葫芦画瓢,用 Save/Retrieve Global String + 工具补丁组合出"Global Number""Global Color"等自定义全局补丁。
快速上手步骤
- 安装:下载 Quartz Composer 并安装 Avocado.zip 里的补丁与插件(安装步骤见 README.md);
- 拖入组合:把
Save Global Boolean/Retrieve Global Boolean等 .qtz 文件直接拖进画布,它们以虚拟补丁形式出现; - 起键名:给发送和接收端填入相同的Name(如
isLogin),记住不能为空; - 连线测试:发送端连上数据源(按钮、滑块均可),运行两个组合,改一端、看另一端是否联动;
- 排错:收不到值时依次检查——Name 是否拼写一致、两端是否都在运行、Enable 是否打开。
避坑清单 ⚠️
| 问题 | 原因与解决 |
|---|---|
| 读取端永远是 false / 空串 | 两端 Name 不一致,或键名为空 |
| 改了 A 组合,B 组合没反应 | B 组合没有在运行,全局值只在线程存活期间可访问 |
| 传数字却收到文本 | Global String 输出就是字符串,需用 String to Number 转回数字 |
| 想传数字精度丢失 | 用 Map Range.qtz 等工具补丁在编码/解码前做好缩放 |
相关文件速查
- 项目总览与安装指南:README.md
- 布尔补丁:Save Global Boolean.qtz、Retrieve Global Boolean.qtz
- 字符串插件:Save Global String.plugin、Retrieve Global String.plugin
- 官方示例:Examples/Utilities/Global String.qtz
- 配套工具:String to Number.qtz、Invert.qtz、Gate.qtz、Delay Value.qtz
掌握这 3 种共享方式后,你可以把 Avocado 从"单个原型"升级成"多屏联动的系统原型"——一个开关控制全局状态,一段文本连接两个界面,这正是交互设计工具箱最强大的地方。🚀
【免费下载链接】avocado
An interaction design toolbox
相关推荐
GPT-SoVITS 快速上手:1 分钟录音微调音色,从零跑通合成全流程
GPT SoVITS 快速上手:1 分钟录音微调音色,从零跑通合成全流程 GPT SoVITS 是少样本语音克隆项目:1 分钟录音就能微调出可用音色,5 秒参考
语音音频人工智能大模型微调模型推理服务本地部署Pinia 组合式 Store 实战:跨 Store 共享状态、Getter 与 Action 的完整指南
Pinia 组合式 Store 实战:跨 Store 共享状态、Getter 与 Action 的完整指南 组合式 Store(Composing Stores
前端状态管理Docker多容器共享存储方案终极指南:3种高效数据共享方法详解
Docker多容器共享存储方案终极指南:3种高效数据共享方法详解 Docker容器技术彻底改变了应用部署方式,但多容器间的数据共享一直是开发者和运维人员面临的挑
教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考