内部方块

内部块是附加到值和语句输入的块。各个块代码生成器需要处理其内部块的串联,以便将代码添加到正确的位置。

import {javascriptGenerator, Order} from 'blockly/javascript';

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
  // Generate innner block code.
  const statement = generator.statementToCode(block, 'MY_STATEMENT_INPUT');
  const value = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

  // Concatenate the string.
  const code = `some code ${statement} ${value} some more code`;

  // Return the code.
  return code;
}

语句输入

您可以使用 statementToCode 生成附加到语句输入的内部块代码。这会调用语句块的块代码生成器并处理代码缩进。

const statement = generator.statementToCode(block, 'MY_STATEMENT_INPUT');

您只需针对直接连接到语句输入的内部代码块调用 statementToCode

输入的值

您可以使用 valueTocode 生成附加到值输入的内部块代码。这会调用值块的块代码生成器,并在必要时处理在内部块代码周围添加圆括号的操作。

如需详细了解如何控制括号,请参阅圆括号文档

const value = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

串联代码

获取内部代码块的代码字符串后,您可以将其与代码字符串串联到正确的位置。

const code = `some code ${statement} ${value} some more code`;

返回代码

不同类型的代码块需要以不同的方式返回代码字符串,因此请查看其各自的页面,了解详情: