补全的积木
原版 Scratch 缺一批很基础的积木:读不到角色是否显示、在第几层,没法暂停声音,没法跳出 循环。Gandi 把这些补进了积木栏,放在各自的分类里,和原版积木排在一起。
这些积木在编译模式下都编译成原生代码,不经过兼容层,运行速度和原版的同类积木相当。
打开方式#
这批积木默认不出现。在设置 · 作品里打开「原版增强」,积木栏里才会出现它们,原有积木下拉里
新加的几项(算术的 ^,比较的 ≠ ≡,特效的饱和度、明度,「[ ] of [角色]」的新属性)也一样。
自成一组的几类(旋转、对话框、拉伸、显示与图层、造型信息、播放控制、声音信息、更多循环)
在积木栏里各占一节,默认收起,点标题展开,见积木栏。
这是作品的设置,跟着作品保存:别人打开这个作品,看到的也是开着的。设置 · 通用 · 高级里的
「新作品默认开启原版增强」决定新建作品时这个开关的初值,已有的作品仍按自己存的来。
开关关着时,打开用了这些积木的作品不受影响:积木照常显示、照常运行,下拉里已经选中的新选项 也照常显示,只是积木栏里不再提供它们。

运动#
| 积木 | 说明 |
|---|---|
| 将旋转中心偏移设为 x: () y: () | 让角色绕造型上的另一点旋转。偏移从造型自身的旋转中心量起,单位是 100% 大小下的舞台单位,x 向右、y 向上。0, 0 就是原来的旋转中心 |
| 旋转中心偏移 [x] | 读回上面设的值 |
| 旋转方式 | 报告 left-right、don't rotate、all around 之一,不随界面语言变化;舞台上的读数显示为「左右翻转」这类中文 |
| 旋转方式为 [左右翻转]? | 判断旋转方式 |
旋转中心偏移之后,角色的坐标仍然指旋转中心,所以设置偏移时画面上是图像在移动。偏移属于 角色而不属于造型:换造型后保留,克隆体继承,随作品保存。碰撞检测按偏移后的位置判断。
「面向 ( )」的下拉在「鼠标指针」后面有一项「随机方向」,面向 −180 到 180 之间的一个随机整数 方向。原版 Scratch 本来就认得这一项,只是没放进下拉,所以它不受「原版增强」开关控制,用了它的 作品在原版里照常运行。
外观#
| 积木 | 说明 |
|---|---|
| 将对话框样式设为 [默认] | 说和思考的对话框换一套外观:默认、圆角、直角、无边框、暗色 |
| 将对话框 [背景] 颜色设为 (■) | 单独设背景、文字、边框的颜色。换预设会清掉单独设过的颜色 |
| 将x拉伸增加 () | |
| 将x拉伸设为 () % | 横向缩放,100 是原样 |
| 将y拉伸增加 () | |
| 将y拉伸设为 () % | 纵向缩放 |
| [颜色] 特效值 | 某个特效当前的值 |
| 移到第 () 层 | 1 是最底层,超出范围时移到最底或最顶 |
| 拉伸 [x] | |
| 显示? | 当前是否显示 |
| 图层 | 在角色中排第几层,1 是最底层;在舞台上执行时为 0 |
| 造型 [当前造型] 的 [宽度] | 造型的宽度、高度、名称、编号、旋转中心 x、旋转中心 y |
| [造型] 数量 | 造型或背景的个数 |
特效下拉里多了两项:
- 饱和度:−100 是灰度,0 是原样,100 是两倍饱和度。
- 明度:只改变明暗,不改变饱和度。−100 是全黑;正值把颜色推向最亮,已经最亮的颜色 保持不变。原来的「亮度」会让颜色发白,两者效果不同。
拉伸和大小相乘:大小 50、拉伸 x 200 时,横向是原来的 100%。拉伸沿角色自身的方向,先拉伸 再旋转。「大小」积木读到的仍是大小本身,不含拉伸。拉伸随作品保存,克隆体继承。
x、y 写在同一块里的「将拉伸设为 x: () y: () %」「将拉伸增加 x: () y: ()」不在积木栏里, 用了它们的作品照常显示、照常运行。
「造型 [ ] 的 [ ]」的造型下拉可以选「当前造型」、某个造型,也可以放入数字或名字,规则 和「换成造型」相同:数字是编号,超出范围时循环。宽度和高度是 100% 大小下的原始尺寸, 不受大小和拉伸影响。旋转中心从造型左上角量起、y 向下,与造型编辑器一致。在舞台上,这块 积木读的是背景。

声音#
| 积木 | 说明 |
|---|---|
| 让 [所有声音] [暂停] | 停止、暂停或继续某个声音,或者这个角色的所有声音 |
| 播放声音 [ ] 从第 () 秒开始 | 不等待。秒数超过声音长度时不播放 |
| [音调] 音效值 | 音调或左右平衡当前的值 |
| 声音 [ ] 的时长 | 单位是秒 |
| 正在播放 [所有声音]? | 暂停着的声音不算正在播放 |
暂停的声音停在原处,「继续」从停下的地方接着播放。「播放声音 () 等待播完」播到一半被 暂停时,脚本会一直等,直到继续播放并播完,或者被停止。对没有暂停的声音执行「继续」 没有效果。点击绿旗或停止会清除暂停状态。
控制#
| 积木 | 说明 |
|---|---|
| 瞬时执行 | 里面的积木一口气跑完,中间不刷新屏幕 |
| 当 ⟨ ⟩ 重复执行 | 条件成立时一直重复 |
| 对 [i] 从 1 数到 () 重复执行 | 变量依次取 1、2……直到给定的数,每次执行一遍 |
| 跳出循环 | 立刻结束包住它的那个循环,接着执行循环后面的积木 |
| 跳过本次循环 | 跳过这一轮剩下的积木,进入下一轮 |
| 是克隆体? | 在舞台上执行时为假 |
「瞬时执行」和勾了「运行时不刷新屏幕」的自制积木是同一回事,只是不用专门做一个自制积木: 包在里面的循环在同一帧里跑完,里面调用的自制积木也一样;跑出这块积木之后,脚本回到平常 的速度。它排在积木栏「重复执行直到」的后面,不在「更多循环」那一节里。
里面的积木连续跑超过 0.5 秒时,会停下来刷新一次屏幕,下一帧接着跑。里面是「重复执行」 这类停不下来的循环时,连续两帧跑满之后每帧只给它约 40 毫秒,编辑器照样能点。
「跳出循环」「跳过本次循环」只作用于包住它的最内层循环,可以放在「如果」「瞬时执行」里面。它们 不会穿过自制积木的定义,也不会穿过 C 型自制积木的身体:放在那里、外面又没有循环时, 这两块积木什么都不做。「问题」面板会提示这种情况(见问题)。
「跳过本次循环」和一轮自然跑完一样:没有开启「运行时不刷新屏幕」时,每一轮之间照常刷新 一次屏幕。
侦测#
| 积木 | 说明 |
|---|---|
| 按下鼠标 [右键]? | 可选右键、左键、中键、任意键 |
作品里用到这块积木后,在舞台上点右键不再弹出浏览器的右键菜单。原来的「按下鼠标?」不变。
「[x 坐标] of [角色]」的属性下拉里多了显示?、图层、旋转方式、拉伸 x、拉伸 y。
运算#
| 积木 | 说明 |
|---|---|
| 将 () 四舍五入到 () 位小数 | 结果是数字,所以 1.50 显示为 1.5。位数可以是负数,−1 表示取整到十位 |
| 如果 ⟨ ⟩ 那么 () 否则 () | 条件成立时报告第一个值,否则报告第二个。右端的 ➕ 加一条「否则如果 ⟨ ⟩ 那么 ()」,从前往后第一个成立的条件决定报告哪个值 |
带下拉的算术积木多了 ^(乘方),带下拉的比较积木多了 ≠ 和 ≡(区分大小写的等于),
详见可扩展参数。
画笔#
装了画笔扩展之后,画笔分类里多三块:
| 积木 | 说明 |
|---|---|
| 图章 [本角色] | 选「本角色」和原来的「图章」一样;选别的角色,就把那个角色此刻的样子印到画笔层上 |
| 画笔落下? | 这个角色的笔是不是落着 |
| 画笔 [颜色] | 读回画笔的颜色、饱和度、亮度、不透明度、hex 代码、粗细 |
「图章 [ ]」选别的角色时印的是它的本体,不是它的克隆体;角色藏着也照样印,和它自己执行 「图章」时一样。下拉里也可以放入角色名。找不到这个名字的角色时什么都不做。
「画笔 [ ]」读出的颜色、饱和度、亮度和「将笔的 [颜色] 设为」用同一个 0–100 的标度,设了多少
读回来就是多少。不透明度是 100 减去透明度。hex 代码是当前笔色的 #rrggbb,不含透明度。
粗细就是「将笔的粗细设为」设的那个数。
和原版 Scratch 的兼容#
用到这些积木的作品,在原版 Scratch 里打不开。比较积木里的 ≠ 例外:它存成原版的
「不成立 ⟨ ( ) = ( ) ⟩」。在原版 Scratch 里运行时,饱和度、明度这两个特效不起作用。拉伸、旋转中心偏移、
对话框样式存在作品文件的 Gandi 专用字段里,原版打开时读不到。
暂不支持#
- 只改变播放速度、不改变音调的声音效果还没有做。
- 光照、粒子、物理这几个引擎扩展还没有适配旋转中心偏移。
- 「跳出循环」放在扩展提供的循环积木里时,解释器和编译模式下的结果可能不同,取决于扩展 的实现方式。