我是新手,我正在玩创建自定义块。
我在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
在我的自定义块的重复生成器内调用。
答案 0 :(得分:1)
很难说,但生成器通常会返回
return code + '\n';
或
return [code, Blockly.JavaScript.ORDER_ATOMIC];
基于块(如果它返回某些东西或只是做某事)。您正在生成(并返回)没有顺序的数组(而不仅仅是return 'F;';
)...不确定,但可能是导致问题。