块定义是用于定义自定义块的对象。例如,它定义了块的外观和风格(文本、字段、连接、颜色等),以及其行为(块级事件处理脚本等)。
例如,以下代码块:
可以使用 JSON 或 JavaScript 进行定义,如下所示:
JSON
Blockly.common.defineBlocksWithJsonArray([{
"type": "string_length",
"message0": 'length of %1',
"args0": [
{
"type": "input_value",
"name": "VALUE",
"check": "String"
}
],
"output": "Number",
"colour": 160,
"tooltip": "Returns number of letters in the provided text.",
"helpUrl": "http://www.w3schools.com/jsref/jsref_length_string.asp"
}]);
defineBlocksWithJsonArray
会根据 JSON 对象创建块定义。
JavaScript
Blockly.Blocks['string_length'] = {
init: function() {
this.appendValueInput('VALUE')
.setCheck('String')
.appendField('length of');
this.setOutput(true, 'Number');
this.setColour(160);
this.setTooltip('Returns number of letters in the provided text.');
this.setHelpUrl('http://www.w3schools.com/jsref/jsref_length_string.asp');
}
};
使用 JavaScript 时,您可以直接创建代码块定义。
屏蔽设置的运作方式
块定义是包含函数值属性的 mixin。实例化新分块时,这些属性会复制到新创建的分块对象。Blockly 会调用这些函数来调用自定义行为。
由于定义函数会混入到代码块对象中:
Blockly 定义了一些可用于自定义代码块的函数。其中最常见的是 init
,Blockly 会调用它来初始化块,并用于定义块的外观和风格。如需查看完整列表,请参阅 Block
和 BlockSvg
类中的函数值属性。这些属性实际上构成了供块定义实现的接口;所有这些属性都是可选的。
代码块定义还可以包含自定义函数,但 Blockly 不会直接调用这些函数。而是可以用于实现其他函数。例如,块级事件处理程序(Block.onchange
属性)可以将不同的事件委托给不同的自定义函数。
如何创建屏蔽设置
您可以通过多种不同的方式创建块定义:
- 使用 Blockly 开发者工具定义代码块的外观和风格。将生成的 JSON 或 JavaScript 复制到您的代码中,并根据需要添加自定义代码。如需了解详情,请参阅 Blockly 开发者工具。
- 找到类似的代码块,复制其定义,然后根据需要进行修改。如需了解详情,请参阅修改现有定义。
- 手写一个代码块定义。如需了解详情,请参阅 JSON 和 JavaScript。