我想要一个名为'Movement'的不同类别的块,里面有两个块,名为 MoveForward 和 MoveBackward 。
在blockly核心库的 toolbox.xml 文件中, 我添加了用于创建UI的XML代码。
<category name="Movement" colour="190">
<block type="move_forward">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">4</field>
</shadow>
</value>
</block>
<block type="move_backward">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">4</field>
</shadow>
</value>
</block>
</category>
现在,在使用和运行这些块时,我需要在哪里添加将创建输出JavaScript代码的JavaScript代码? 简单来说,我需要做些什么才能使这些块生成JavaScript代码?
答案 0 :(得分:1)
我假设您已经编写了块定义,这些块显示在工具箱UI中。在这种情况下,代码生成器是您缺少的部分。在所有块平台上用JavaScript定义的生成器。它们看起来像这样:
// From the Android turtle demo.
// https://github.com/google/blockly-android/blob/master/blocklydemo/src/main/assets/turtle/generators.js
Blockly.JavaScript['turtle_move_internal'] = function(block) {
// Generate JavaScript for moving forward or backwards.
var value = block.getFieldValue('VALUE');
return 'Turtle.' + block.getFieldValue('DIR') +
'(' + value + ', \'block_id_' + block.id + '\');\n';
};
Blockly.JavaScript是块类型名称(在您的情况下为move_forward
和move_backward
)到JavaScript生成器函数的映射。每个生成器函数都在JavaScript Block
对象中传递。这是在Blockly的Web版本中随处可用的相同API。
编写自己的生成器文件。如果您使用的是Android,则应该在您的资源文件夹中,以及AbstractBlocklyActivity.getGeneratorsJsPaths()
返回的资产路径之一。