Я новичок в блочном, и я играю с созданием пользовательских блоков.
Я создал новый файл (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/');
}
};
Затем я создал новый файл (move.js) в папке генераторов/javascript и написал там очень простые генераторы для блоков (они возвращают только букву).
Blockly.JavaScript['move_forward'] = function(block) {
return ['F;'];
};
Блоки работают нормально и возвращают текст, который они должны отображать при размещении вне циклов. Но когда я вставляю их в цикл повторения или цикла while, что-то происходит, и ничего не возвращается. Я провел некоторое тестирование и думаю, что проблема возникает, когда
Blockly.JavaScript.statementToCode
вызывается внутри генератора повторов для моих пользовательских блоков.