MIT Scratch二次开发:修改内置积木、创建自定义积木方法咨询
Scratch-GUI自定义积木操作步骤
前置配置说明
你当前只安装了scratch-gui的默认依赖是没法直接修改积木的,因为scratch-gui默认依赖的是预编译好的scratch-blocks、scratch-vm npm包,没有源码可编辑。你需要先把这两个依赖换成本地源码版本,操作如下:
- 把scratch-blocks、scratch-vm两个官方仓库克隆到和scratch-gui同级的目录
- 分别进入两个仓库目录执行
npm install、npm link做本地软链接 - 回到scratch-gui目录执行
npm link scratch-blocks scratch-vm关联本地依赖,之后启动服务就能识别你对这两个依赖的修改了
需求1:修改内置=积木的显示文本、颜色,不改动运行逻辑
所有积木的外观定义都在scratch-blocks仓库中:
- 打开
scratch-blocks/core/blocks_operators.js文件,搜索operator_equals找到=积木的定义代码 - 找到
message0字段,把原来的%1 = %2改成%1 equal %2,即可修改显示文本,完全不会影响运行逻辑 - 同个定义块下修改
colour字段的值,改成你想要的色值即可调整积木颜色 - 修改完成后在scratch-blocks目录执行
npm run build编译,重启scratch-gui的服务就能看到效果
需求2:新增自定义block积木
需要同时修改scratch-blocks、scratch-vm、scratch-gui三个仓库的对应文件:
- 定义积木外观(scratch-blocks)
- 打开对应分类的积木定义文件,比如你要加在运算分类就打开
scratch-blocks/core/blocks_operators.js,新增积木定义代码:
Blockly.Blocks['custom_self_define_block'] = { init: function() { this.jsonInit({ "message0": "自定义积木 %1", // 积木显示的文本,%1对应参数占位符 "args0": [ { "type": "input_value", "name": "INPUT_PARAM", "check": "Number" } ], "category": Blockly.Categories.operators, // 所属分类 "colour": '#4C97FF', // 积木颜色 "output": "Number", // 积木返回值类型 "tooltip": "这是自定义的积木" }); } };- 在
scratch-blocks/msg/messages.js里把你定义的积木IDcustom_self_define_block加到导出列表中,执行npm run build编译scratch-blocks
- 打开对应分类的积木定义文件,比如你要加在运算分类就打开
- 定义积木运行逻辑(scratch-vm)
- 打开对应分类的逻辑处理文件,比如运算分类就打开
scratch-vm/src/blocks/scratch3_operators.js - 在
getPrimitives方法的返回对象中新增积木逻辑:
'custom_self_define_block': (args, util) => { // 这里写你的积木逻辑,比如把输入的参数+2返回 return Number(args.INPUT_PARAM) + 2; } - 打开对应分类的逻辑处理文件,比如运算分类就打开
- 注册积木到GUI(scratch-gui)
- 打开
scratch-gui/src/lib/blocks.js,把你的积木IDcustom_self_define_block加到对应分类的积木数组中 - 重启scratch-gui的
npm start服务,就能在对应分类的积木列表里看到你新增的自定义积木了
- 打开
内容的提问来源于stack exchange,提问作者redoc
相关产品推荐
相关产品推荐

