用JavaScript制作TurboWarp扩展

这里展示了一个十分简单的制作TurboWarp扩展的方法。制作一个较为基础的扩展是比较简单(额,我也不会JS)的……

目录

制作步骤

1. 准备模板

2. 基本格式

blockType可接受的值

type可接受的值

3. 实际操作



制作步骤

1. 准备模板

以下就是模板了。

class MyExt{//可以自己改,但要符合标准(大小写半角字母,阿拉伯半角数字,半角下划线,开头不可以有数字)
  getInfo(){//这是模板,只能这么写,不然不会识别
    return {
      id: 'Myid',//可以自己改,但一开始就确定,并且符合标准,以后更新代码时不再改动,否则无法识别,导致崩溃
      name: '工具',//在左边显示的插件名称,可以包括中文
      color1:'#00FF00',//代码块颜色,可以添加3个,分别是color1,color2,color3,也可以不写
      blocks:[
        //TODO: 在这里定义积木块
        {
          opcode: 'n',//可以自己改,对应执行的函数名称
          blockType: Scratch.BlockType.REPORTER,//下面会讲到
          text: '换行',//积木块的名称,' [A] '表示输入的参数,后面会讲到(如果还要载入下一个积木,在text末尾和'{}'末尾加上',',否则不加)
        },
        {
          opcode: 'inf',
          blockType: Scratch.BlockType.REPORTER,
          text: '∞'
        }
      ],
    };
  }
  //TODO: 在这里定义函数
  n() {
    return '\n';//这个是返回的值
  }
  inf() {
    return 1/0;
  }
}

Scratch.extensions.register(new MyExt()/*这个必须和第一行的class一样*/);

效果差不多就这样:  

2. 基本格式

上面的代码中已经呈现了一种基本格式,以下为blockType可以接受的值。

blockType可接受的值

描述
Scratch.BlockType.COMMAND不会报告值的积木块。
Scratch.BlockType.REPORTER报告字符串、数字的积木块。

Scratch.BlockType.BOOLEAN

报告布尔值(true/false)的积木块。
其它请见原介绍……

但是,有些时候我们需要输入一些参数……那该怎么办呢?其实,我们可以在text内添加像' [A] ' ' [B] '之类的东西。这些就是参数了。

下面的代码展示了一个传参实例。

class StrictEqualityExtension {
  getInfo() {
    return {
      id: 'strictequalityexample',
      name: 'Strict Equality',
      blocks: [
        {
          opcode: 'strictlyEquals',
          blockType: Scratch.BlockType.BOOLEAN,
          text: '[ONE] 严格= [TWO]',
          arguments: {
            ONE: {
              type: Scratch.ArgumentType.STRING,//一个输入,下面会讲到
              defaultValue: '01'//默认值,但注意布尔值是没有默认值的
            },
            TWO: {
              type: Scratch.ArgumentType.STRING,//同上
              defaultValue: '1'
            }
          }
        }
      ]
    };
  }
  strictlyEquals(args) {
    return args.ONE === args.TWO;//判断,返回,这里'==='代表严格平等
  }
  /*以上'strictlyEquals(args) {}'部分也可以使用以下部分
  strictlyEquals({ONE, TWO}) {
    return ONE === TWO;//这里不用加'args.'
  }
  */
}
Scratch.extensions.register(new StrictEqualityExtension());

效果差不多就这样:

上面的代码展示了一个传参实例,以下为argements内type可以接受的值。

type可接受的值

描述
Scratch.ArgumentType.STRING字符串。
Scratch.ArgumentType.NUMBER数字。
Scratch.ArgumentType.BOOLEAN布尔值(true/false),没有默认值。
Scratch.ArgumentType.COLOR颜色,返回为十六进制颜色代码。
Scratch.ArgumentType.ANGLE角度。
Scratch.ArgumentType.MATRIX以二进制表示的5×5矩阵。
Scratch.ArgumentType.NOTE钢琴键盘上的音符。
Scratch.ArgumentType.SOUND这个角色存储的声音。
其它请见原介绍……

3. 实际操作

下面我制作了一个简单的扩展,十分好用。

class Box {
  getInfo() {
    return {
      id: 'box',
      name: '我只是一个工具盒子啊',
      blocks: [
        {
          opcode: 'endl',
          blockType: Scratch.BlockType.REPORTER,
          text: '\\n',
        },
        {
          opcode: 'tab',
          blockType: Scratch.BlockType.REPORTER,
          text: '\\t',
        },
        {
          opcode: 'pi',
          blockType: Scratch.BlockType.REPORTER,
          text: 'π',
        },
        {
          opcode: 'inf',
          blockType: Scratch.BlockType.REPORTER,
          text: '∞',
        },
        {
          opcode: 'equals',
          blockType: Scratch.BlockType.BOOLEAN,
          text: '[ONE] 严格 = [TWO]',
          arguments: {
            ONE: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: 'A'
            },
            TWO: {
              type: Scratch.ArgumentType.STRING,
              defaultValue: 'a'
            }
          }
        }
      ]
    };
  }
  endl() {
    return '\n';
  }
  tab() {
    return '\t';
  }
  pi() {
    return 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196;
  }
  inf() {
    return 1/0;
  }
  equals(args) {
    return args.ONE === args.TWO;
  }
}
Scratch.extensions.register(new Box());

效果差不多就这样:


本文接近尾声,想要了解更多,就进入原网页了解更多。

再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值