积木栏
积木栏是拖出积木的地方。与原版 Scratch 最大的不同是:全局只有一个,而且它是一个 面板,可以停靠、可以浮动、可以更换摆法、可以折起,也可以改成贴在每个工作区上。 里面放哪些积木、按什么顺序排列,同样可以修改。

独立面板形态:左边一条分类条,右边是积木;左上角 «« 折起,左下角齿轮是设置。
两种形态#
设置(顶栏齿轮)里的「积木栏」这一条决定它的位置:
| 选项 | 形态 |
|---|---|
| 独立面板 | 全局只有一个,自己占停靠栏的一格,也可以拖成浮窗(默认) |
| 内置在工作区 | 每个工作区面板自带一个,半透明覆盖在工作区一侧 |
独立面板就是上面那张图。它跟随「最后点击过的那个工作区」,面板标题里写着当前服务于
哪个角色(积木栏(角色1));在另一个角色的工作区里点一下,积木栏就换成那个角色的
造型、声音和变量。
内置时每个工作区自带一个,覆盖在工作区之上,下层的积木透过毛玻璃可见:

内置的积木栏边上有 6px 的把手,拖动可改变宽度;宽度由所有工作区共用。几个数值:最窄 220px,最宽 640px,并且不超过工作区面板宽度的 55%。工作区面板窄于 520px 时自动折成 分类条,窄于 300px 时不再显示(那么小的窗口本来也放不下)。内置时积木栏固定在这个 面板的角色上,不跟随「最后点击过的工作区」。

内置模式靠哪一边由设置里的「内置积木栏位置」决定,与下面「摆法」里的靠左 / 靠右是同一项 设置,在任一处修改都可以。布局也保存这一份状态:切到「经典布局」是内置形态,切回 「默认布局」是独立面板。
折起来,和悬停揭开#
独立面板左上角那颗 «« 把积木栏折成只剩分类条:

折起之后鼠标移上去时积木列表会浮出,覆盖在旁边的面板上,不必先展开即可拖动:

鼠标离开即收回。正在拖动积木时不会中途收起(否则正在拖动的那块会被截断)。
不需要它经过时自动弹出的,可以在设置 · 通用 · 编辑器里关掉「靠近自动展开」:之后折叠态
只响应 «« 那颗按钮,按一下展开,再按一下折回。触屏上点分类同样可以展开,因为触屏没有
悬停状态。
比面板宽的长积木#
积木栏是一条窄栏,扩展里不少长积木比它宽,右半截会被裁掉。鼠标放上去,长积木整块露出来, 铺到旁边的工作区上,移开就收回 —— 分类条在左和网格摆法都是这样,独立积木栏和内置在工作区里 的那条也一样。悬停前后积木栏本身的样子不变,只是不再裁掉伸出去的那一截。拖动照常,从积木栏 拖出一块积木之后再放上去也照样铺。

分类条在右时不这样做:积木朝右长,越出去的是面板外边。那时看后半截靠横向滚动:触控板左右 滑动,或者按住 Shift 滚动滚轮(这一招在哪种摆法里都能用)。


同一块「在 (1) 秒内滑行到 x: y:」,上图右边被面板边缘裁掉,下图横向滚动之后 右端显示出来。
滚到尽头就是那一段里最宽的那块积木的右端,不会滚进空白区域;纵向滚动到较窄的一段, 或者点另一个分类,横向位置自动回到最左。
可折叠分组#
一个扩展有四十多块积木时,积木栏会变成一条很长的列表。因此积木栏里的每一条标题都 可以折叠:分类自身那条(动作、外观、场景…),以及扩展写的分组标题,都可以点一下 收起。标题右边那个小三角表示当前是展开还是收起;标题长到三角放不下时不画三角,整行照样 可以点。

「场景」这一类里,最常用的几块直接排在最上面,其余分成五节收起。

展开「同时运行多个场景」之后,里面还可以再分小节(「运行与停止」),小节自身也可以 折叠。最多两层。
内置分类也分了节。原版就有的几组(动作的「坐标」,外观的「大小」「特效」,侦测的「鼠标」 「帧率」……)默认展开;开着原版增强时多出来的几组(「对话框」「拉伸」 「旋转」「更多循环」……)默认收起。

几点说明:
- 折叠由编辑器决定,不取决于扩展:扩展有没有写分组声明都可以折叠,第三方扩展不需要改动。
- 折起的那一节的积木不会进入积木栏,几十块积木的渲染一并省去。
- 折过的状态记在浏览器里(
localStorage的gandi3.toolboxFolds),下次打开仍然是折起的。 - 搜索基于未折叠的完整列表,折起的积木同样能搜到。
摆法:靠左 / 靠右 / 网格#
在积木栏设置的第一行里选:
| 摆法 | 什么样 | 什么时候用 |
|---|---|---|
| 靠左 | 分类在左,积木在右 | Scratch 的原有形态 |
| 靠右 | 整体镜像,分类贴外侧 | 积木栏放在屏幕右边时 |
| 网格 | 分类横排在顶上,积木铺成多列,带搜索 | 又宽又矮的积木栏(贴底边,或者拉成窗口) |

顶上一条是搜索栏和分类,积木区在它下面。积木按面板宽度自动分列,太宽的积木占多列,比整栏 还宽的悬停看全(见上面「比面板宽的长积木」)。积木栏设置那颗按钮在搜索栏右端,不压积木。 只有网格模式有搜索框。
分类多的时候#
装了很多扩展,分类条也不用滚:所有分类始终都在眼前,放不下时分类条自己收紧。
- 网格摆法:分类是一排排带名字的胶囊,超过三行(或者占到积木栏六分之一高)就换成只有 图标的小格子,鼠标停在上面显示名字。
- 靠左 / 靠右:竖条先收紧上下留白、字小一号;还放不下就只留图标(悬停显示名字),再放 不下就把图标排成两列,分类颜色画在图标下面。条宽不变,折起来的样子也不变。


窗口拉大、分类变少,又会退回带名字的样子。分类条在左时底下空出设置按钮的位置,最后一个分类 不会压在按钮底下。
搜索积木(网格模式)#
原版 Scratch 没有搜索,必须先知道一块积木属于哪一类。常用的那几块通常知道,但「当前时间 在哪一类」这种问题只能靠滚动查找,一个作品装上三十个扩展之后基本无法定位。
搜索框匹配的是积木上的文字(包含它默认填的值,所以「移动 10」能找到「移动 (10) 步」)、
积木栏里为它配好的下拉选项,以及 opcode(写扩展的人可以直接搜 motion_movesteps)。
拼音和首字母同样支持:

输入 huaxing 可以找到两块「滑行」。右边写着找到几块,✕ 或 Esc 清空。
多个词用空格隔开,每个词都要命中,所以「滑行 秒」比「滑行」的范围更窄。匹配算法与
Ctrl + F 的全局搜索相同。
积木栏设置#
积木栏左下角那颗按钮(网格摆法在搜索栏右端)打开这一页。改动立即生效,没有「确定」按钮:积木栏就在旁边,它的 变化本身就是反馈。

左边是分类,右边是选中那一类的积木,两边都可以拖动排序,也都可以点眼睛隐藏。
| 操作 | 结果 |
|---|---|
| 拖左边那一列 | 改分类在分类条上的顺序 |
| 拖右边那一列 | 改这一类里积木的顺序 |
| 点眼睛 | 隐藏这个分类 / 这块积木;分类名底下会写成「18 / 19 个」 |
| 点星标 | 把这块积木收进「常用」 |
| 恢复默认 | 全部还原成 Scratch 的默认排列 |
变量、列表和自制积木这几类的内容由作品决定(有几个变量、写了几块自制积木),所以它们 只能整体显示或隐藏,不能逐块排序,设置页里会直接说明这一点。变量和列表两类里,条目 还会按作用域分成几段(全局 / 本场景 / 本角色),见变量和列表; 自制积木按各自的分类分组,每组一条可折叠的小标题,见自制积木。
加过星标的积木会形成一个「常用」分类,带一颗星,排在分类条最前面:

「常用」里放的是副本:收进常用的积木,在原来的分类里依然存在。
这些偏好存在浏览器里(gandi3.toolboxPrefs、gandi3.paletteLayout),属于这台机器,
不随作品保存。
细节#
- 积木栏可以一直滚动到最底部,最后一块积木是完整的,可以拖出来:积木列表的高度正好 等于它的容器,不会多出一段够不到的区域。
- 排序偏好按「这一类里第几块同名积木」记录名字。手动排过序的分类里,夹在积木中间的 分组标题会被丢弃,因为顺序已经被自定义,「下面这几块是一节」不再成立。
- 从积木栏往任何方向拖动都能拖出积木(上下方向留给滚动),因为它是一个可以放在屏幕任何 位置的面板,不像原版始终贴在工作区左边。
- 把积木拖回积木栏即为删除。