我是块新手,我正在玩创建自定义块。
我在 blocks 文件夹中创建了一个新文件 (move.js),并在那里创建了一些自定义块。它们都具有相似的结构,如下图所示
Blockly.Blocks['move_forward'] = {
init: function() {
this.appendDummyInput()
.appendField("Move Forward");
this.appendDummyInput()
.appendField(new Blockly.FieldImage("http://iosites.org/robotino/front.png", 20, 20, "Forward"));
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(120);
this.setTooltip('');
this.setHelpUrl('http://www.example.com/');
}
};
然后我在 generators/javascript 文件夹中创建了一个新文件(move.js),并在那里为块编写了非常简单的生成器(它们只返回一个字母)。
Blockly.JavaScript['move_forward'] = function(block) {
return ['F;'];
};
这些块可以正常工作并返回它们在堆叠外部循环时应该显示的文本。但是当我将它们嵌套在一个重复或一个while循环中时,会发生一些事情并且没有任何返回。我做了一些测试,我认为问题发生在
Blockly.JavaScript.statementToCode
在我的自定义块的重复生成器中调用。