详解scratch3.0二次开发之scratch-blocks中的blocks的类型、定义和使用方法

 更新时间:2021年08月13日 11:26:01   作者:取个昵称就那么难  
scratch-blocks是scratch-gui依赖的一个基本模块,blocks的作用是通过拖曳的方法组成blocks堆块,今天通过本文给大家分享scratch3.0二次开发之scratch-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

一个blocks块的定义

比如一个右转多少度的块

在这里插入图片描述

定义块的代码:

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.

<block type="motion_turnright">
            <value name="DEGREES">
                <shadow type="math_number">
                    <field name="NUM">15</field>
                </shadow>
            </value>
        </block>

motion_turnright 这是刚定义好的块。value 标签中的name,表示变量名,在scratch-vm里面会用到,shadow标签这段表示预先设置的值,也是预先设置的块。去掉value这段代码

<block type="motion_turnright"> </block>

它显示成这样:

在这里插入图片描述

scratch-blocks的编译

scratch-blocks修改后的文件,只有编译压缩后才能生效。但是按照官方的方法,windows下很难编译成功。如果是定义blocks块,可以参考上篇博客里介绍的方法《scratch3.0二次开发之scratch-blocks的免编译修改方法

补充

下面看下scratch3.0二次开发之blocks生成代码思路

总的思路:

  1. 引入一个生成代码的文件,比如要生成arduino代码,就要引入生成arduino代码的文件,要生成python代码,就要引入python文件。
  2. 如果scratch-block中没有自己要的blocks块,就定义一个blocks块用来生成代码。(生成的方法可以看我之前的文章《[scratch3.0二次开发之scratch-blocks中的blocks的类型、定义和使用方法])》
  3. 给每个blocks定义要生成的代码。
  4. 把生成代码的代码blocks块加入make-toolbox-xml 中。
  5. 在gui中设置一个代码编辑区,用来显示生成的代码。

到此这篇关于scratch3.0二次开发之scratch-blocks的免编译修改方法的文章就介绍到这了,更多相关scratch blocks的免编译内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用VSCode如何从github拉取项目的实现

    使用VSCode如何从github拉取项目的实现

    这篇文章主要介绍了使用VSCode如何从github拉取项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • VSCode让终端默认在当前文件的路径启动(方法推荐)

    VSCode让终端默认在当前文件的路径启动(方法推荐)

    这篇文章主要介绍了VSCode中如何让终端默认在当前文件的路径启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 使用HTTP_X_FORWARDED_FOR获取客户端IP的严重后果

    使用HTTP_X_FORWARDED_FOR获取客户端IP的严重后果

    我的建议是不要再使用上面的方法去获取客户端IP.即是不要再理会代理情况.
    2009-11-11
  • git如何撤销commit的方法(未push)

    git如何撤销commit的方法(未push)

    这篇文章主要介绍了git如何撤销commit的方法(未push),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Web通信 分析工具 [推荐]

    Web通信 分析工具 [推荐]

    在抓虾上看到一篇Web开发分析工具的文章(链接就免了),怎么远没有我用的东西好用呢? 还是介绍介绍我用的吧。由于平常开发只用FireFox,完成后再去调试IE, 所以这些工具绝大部分是针对FireFox的。
    2009-04-04
  • 防止删库跑路及高级代码投毒技巧

    防止删库跑路及高级代码投毒技巧

    这篇文章主要为大家介绍了防止删库跑路及高级代码投毒技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 高性能WEB开发 JS、CSS的合并、压缩、缓存管理

    高性能WEB开发 JS、CSS的合并、压缩、缓存管理

    本篇文章主要讨论下目前JS,CSS 合并、压缩、缓存管理存在的一些问题,然后分享下自己项目中用到的1个处理方案,并提供1个实例下载。
    2010-05-05
  • 快速设置IDEA代码风格为Google风格

    快速设置IDEA代码风格为Google风格

    这篇文章主要介绍了快速设置IDEA代码风格为Google风格,使用Google风格format的图文教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-11-11
  • git pull每次都要输入用户名和密码的解决办法

    git pull每次都要输入用户名和密码的解决办法

    本文主要介绍了git pull每次都要输入用户名和密码的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 使用动画实现微信读书的换一批效果(两种方式)

    使用动画实现微信读书的换一批效果(两种方式)

    这篇文章主要介绍了使用动画实现微信读书的换一批效果,本文通过实例代码通过两种方式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论