创建自定义块并编写代码以在 Android 上生成 Javascript 代码
Creating a custom block and writing the code to generate the Javascript code on Android
我想要一个叫做 'Movement' 的不同类别的方块,里面有两个方块,分别叫做 MoveForward 和 向后移动.
在blockly核心库的toolbox.xml文件中,
我添加了 XML 代码来创建 UI.
<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 代码?
我假设您已经编写了块定义并且这些块显示在工具箱中 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 网络版中各处使用的 API 相同。
编写您自己的生成器文件。如果您使用的是 Android,这应该放在您的资产文件夹中,并且是 AbstractBlocklyActivity.getGeneratorsJsPaths()
.
返回的资产路径之一
我想要一个叫做 'Movement' 的不同类别的方块,里面有两个方块,分别叫做 MoveForward 和 向后移动.
在blockly核心库的toolbox.xml文件中, 我添加了 XML 代码来创建 UI.
<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 代码?
我假设您已经编写了块定义并且这些块显示在工具箱中 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 网络版中各处使用的 API 相同。
编写您自己的生成器文件。如果您使用的是 Android,这应该放在您的资产文件夹中,并且是 AbstractBlocklyActivity.getGeneratorsJsPaths()
.