Scratch 对象 API
全局 Scratch 对象是扩展与 RemixWarp 对话的方式。它携带注册函数、类型常量、转换辅助工具,以及(对于非沙箱扩展)对 VM 和权限 API 的直接访问。
沙箱扩展得到一个受限的 Scratch;VM、渲染器和积木工具仅限非沙箱。
注册与结构
(function(Scratch) {
'use strict';
class MyExtension {
getInfo() {
return {
id: 'myextension',
name: 'My Extension',
blocks: [
{
opcode: 'myBlock',
blockType: Scratch.BlockType.REPORTER,
text: 'convert [VALUE] to number',
arguments: { VALUE: { type: Scratch.ArgumentType.STRING, defaultValue: '42' } }
}
]
};
}
myBlock(args) {
return Scratch.Cast.toNumber(args.VALUE);
}
}
Scratch.extensions.register(new MyExtension());
})(Scratch);
Scratch.extensions.register(instance):注册您的扩展。恰好调用一次。Scratch.extensions.unsandboxed:以非沙箱方式运行时为true。在使用任何仅非沙箱的 API 之前检查它。
类型常量
Scratch.BlockType
| 常量 | 值 | 含义 |
|---|---|---|
COMMAND | command | 堆叠积木,无返回值 |
REPORTER | reporter | 返回字符串或数字的圆形积木 |
BOOLEAN | Boolean | 返回真/假的六边形积木 |
HAT | hat | 有条件地启动堆栈(请参阅事件和帽子) |
EVENT | event | 在事件上启动堆栈;没有函数 |
CONDITIONAL | conditional | 如果/否则 风格 C 积木(请参阅自定义 C 积木) |
LOOP | loop | 重复执行/重复执行无限次 风格 C 积木 |
BUTTON | button | 积木区按钮,不是真正的积木 |
LABEL | label | 积木区中的文本标签,不是真正的积木 |
XML | xml | 原始 Blockly XML |
Scratch.ArgumentType
STRING、NUMBER、BOOLEAN、COLOR、ANGLE、MATRIX、NOTE、COSTUME、SOUND、IMAGE。每个接受什么请参阅处理输入。
Scratch.TargetType
SPRITE('sprite')和 STAGE('stage'),与积木的 filter 一起使用。
Scratch.Cast
Scratch 语义的转换。完整细节在实用 API 页面。
Scratch.Cast.toNumber('3.14'); // 3.14
Scratch.Cast.toString(42); // '42'
Scratch.Cast.toBoolean('false'); // false
Scratch.Cast.compare('10', '9'); // > 0
Scratch.vm(仅非沙箱)
VM 实例。完整的表面请参阅VM API 页面。
const vm = Scratch.vm;
const runtime = vm.runtime;
vm.greenFlag();
vm.stopAll();
vm.setTurboMode(true);
runtime.targets; // 所有角色和舞台
runtime.getTargetForStage(); // 舞台
vm.editingTarget; // 编辑器中选中的角色
runtime.on('PROJECT_RUN_START', () => { /* ... */ });