当前位置: 代码迷 >> Android >> 创建一个自定义块并编写代码以在Android上生成Javascript代码
  详细解决方案

创建一个自定义块并编写代码以在Android上生成Javascript代码

热度:70   发布时间:2023-08-04 12:09:06.0

我想所谓的“运动”两个区块里面叫MoveForwardMoveBackward块的不同类别。

在块式核心库的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代码还需要做些什么?

我假设您已经编写了块定义,并且这些块将显示在工具箱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_forwardmove_backward )与JavaScript生成器函数的映射。 每个生成器函数都在JavaScript 对象中传递。 这是Blockly网络版本中各处所使用的相同API。

编写自己的生成器文件。 如果您使用的是Android,则该文件夹应放在您的资产文件夹中,并由AbstractBlocklyActivity.getGeneratorsJsPaths()返回的资产路径之一。

  相关解决方案