Javascript 将自定义块嵌套到循环中并生成代码

Javascript 将自定义块嵌套到循环中并生成代码,javascript,blockly,Javascript,Blockly,我是blockly的新手,我正在玩arround创建自定义块 我在blocks文件夹中创建了一个新文件(move.js),并在那里创建了一些自定义块。它们都有类似的结构,如下所示 Blockly.Blocks['move_forward'] = { init: function() { this.appendDummyInput() .appendField("Move Forward"); this.appendDummyInput() .a

我是blockly的新手,我正在玩arround创建自定义块

我在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),在那里我为块编写了非常简单的生成器(它们只返回一个字母)

块工作正常,并返回堆叠在循环外部时应该返回的文本。但当我把它们嵌套在一个repeat或while循环中时,发生了一些事情,并且没有任何回报。我做了一些测试,我认为当

Blockly.JavaScript.statementToCode

在自定义块的重复生成器中调用。

很难说,但生成器通常返回

return code + '\n';


基于块(如果它返回某些内容或只是执行某些操作)。您正在生成(并返回)一个没有顺序的数组(而不仅仅是
返回'F;;
)。。。不确定,但可能是这导致了问题。

是的,去掉方括号对我很有效。在此之前,我的代码为单个块生成ok,但是当堆叠时,例如在循环中,我会在末尾得到一行逗号和一个语法错误。
return code + '\n';
return [code, Blockly.JavaScript.ORDER_ATOMIC];