☰
Avocado的Global Boolean/String补丁完全指南:跨组合共享数据的3种方式
2026/10/11 18:49:09 网站建设 项目流程

【免费下载链接】avocado

An interaction design toolbox

项目地址:https://gitcode.com/gh_mirrors/avocado11/avocado
点击查看免费下载

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 BooleanAvocado/Save Global Boolean.qtz保存一个布尔值(开/关)
Retrieve Global BooleanAvocado/Retrieve Global Boolean.qtz按名字取回布尔值
Save Global StringSave Global String.plugin保存任意字符串
Retrieve Global StringRetrieve Global String.plugin按名字取回字符串

前两者是现成的 .qtz 组合(直接拖进画布就能用),后两者是 C 语言编译的 Quartz Composer 插件(.plugin),Boolean 补丁内部正是复用了它们。

Avocado 提供的全部交互组件(拖拽、轮播、拨盘等)演示效果见下,全局值补丁常与它们配合使用:

![Avocado交互组件动画演示](https://raw.gitcode.com/gh_mirrors/avocado11/avocado/raw/744833442de4760b0d9b25fedf8b67761d8a7f2e/Other/GIFs/Avocado 1/Animations.gif?utm_source=gitcode_repo_files)

3 种跨组合共享数据的方式

方式一:用 Global Boolean 做"全局开关"

这是最简单的跨组合通信——比如组合 A 里点击一个按钮,组合 B 里的图层立刻变色。

原理拆解(查看 Retrieve Global Boolean.qtz 的 plist 结构可知):

  1. Save Global Boolean接收Value(布尔)和Name(键名)两个输入,内部调用 Save Global String 插件,把布尔转成字符串"1"或"0"存进全局键;
  2. Retrieve Global Boolean输入Name,内部调用 Retrieve Global String 插件取回字符串,再经一段 JavaScript 判断:等于"1"输出true,否则输出false;
  3. 它还提供一个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"等自定义全局补丁。

快速上手步骤

  1. 安装:下载 Quartz Composer 并安装 Avocado.zip 里的补丁与插件(安装步骤见 README.md);
  2. 拖入组合:把Save Global Boolean/Retrieve Global Boolean等 .qtz 文件直接拖进画布,它们以虚拟补丁形式出现;
  3. 起键名:给发送和接收端填入相同的Name(如isLogin),记住不能为空;
  4. 连线测试:发送端连上数据源(按钮、滑块均可),运行两个组合,改一端、看另一端是否联动;
  5. 排错:收不到值时依次检查——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

项目地址:https://gitcode.com/gh_mirrors/avocado11/avocado
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询