详解scratch3.0二次开发之scratch-blocks中的blocks的类型、定义和使用方法
【详解scratch3.0二次开发之scratch-blocks中的blocks的类型、定义和使用方法】scratch-blocks是scratch-gui依赖的一个基本模块。它的作用是生成gui界面上的blocks。(有关scratch-blocks的方法可以看我上一篇博客《scratch3.0二次开发之scratch-blocks的免编译修改方法》)。blocks的作用是通过拖曳的方法组成blocks堆块,点击greenflag控件,舞台区(stage)会有相应的变化。
文章图片
scratch-gui的blocks的生成文件在scratch-blocks\blocks_vertical里。
blocks几种形状
blocks块的形状有以下几种:
块 | 形状名称 |
---|---|
文章图片 |
shape_statement |
文章图片 |
shape_hat |
文章图片 |
shape_end |
文章图片 |
shape_statement |
文章图片 |
output_boolean |
文章图片 |
output_number |
文章图片 |
output_string |
比如一个右转多少度的块
文章图片
定义块的代码:
Blockly.Blocks['motion_turnright'] = {/** * Block to turn right. * @this Blockly.Block*/init: function() {this.jsonInit({"message0": “右转 %1 %2 度”,"args0": [{"type": "field_image","src": Blockly.mainWorkspace.options.pathToMedia + "rotate-right.svg","width": 24,"height": 24},{"type": "input_value","name": "DEGREES"}],"category": Blockly.Categories.motion,//块归属的类,这里是运动类。"extensions": ["colours_motion", "shape_statement"]}); }};
“message0“:表示块里显示的字符串,%1,%2表示块里的字段field,块里有1个field是%1,有两个field是按先后顺序设为%1,%2,以此类推,
”args0”:里面的数组元素对应上面设置的field,args0[0]对应%1,args0[1]对应%2,…。每个元素对象表示设置了的field的类型。
文章图片
“extensions”:"colours_motion"设置块的颜色,"shape_statement"设置了块的形状;
blocks块的使用 定义好的block块,使用的时候要把加到xml文件里,文件地址:scratch-gui\src\lib\make-toolbox-xml.js,找到对应的类,这里是motion.
15
motion_turnright 这是刚定义好的块。value 标签中的name,表示变量名,在scratch-vm里面会用到,shadow标签这段表示预先设置的值,也是预先设置的块。去掉value这段代码
它显示成这样:
文章图片
scratch-blocks的编译 scratch-blocks修改后的文件,只有编译压缩后才能生效。但是按照官方的方法,windows下很难编译成功。如果是定义blocks块,可以参考上篇博客里介绍的方法《scratch3.0二次开发之scratch-blocks的免编译修改方法》
补充 下面看下scratch3.0二次开发之blocks生成代码思路
总的思路:
- 引入一个生成代码的文件,比如要生成arduino代码,就要引入生成arduino代码的文件,要生成python代码,就要引入python文件。
- 如果scratch-block中没有自己要的blocks块,就定义一个blocks块用来生成代码。(生成的方法可以看我之前的文章《[scratch3.0二次开发之scratch-blocks中的blocks的类型、定义和使用方法])》
- 给每个blocks定义要生成的代码。
- 把生成代码的代码blocks块加入make-toolbox-xml 中。
- 在gui中设置一个代码编辑区,用来显示生成的代码。
推荐阅读
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- Java|Java OpenCV图像处理之SIFT角点检测详解
- C语言浮点函数中的modf和fmod详解
- 二十五、狗(外戚)咬狗(宦官)与第二次党锢
- 超级行动力第二次作业-行动大于学习的秘密
- 濮阳市第十中学召开第三届第二次教职工代表大会
- 虚拟DOM-Diff算法详解
- LSTM网络层详解及其应用实例
- OC:|OC: WKWebView详解
- 积极探索|积极探索 绽放生命 ???——心心相印计划:青少年心理工作研讨小组全国大型公益行动第二次活动包头市青山区分校圆满成功