【问题标题】:Creating a custom block and writing the code to generate the Javascript code on Android创建自定义块并编写代码以在 Android 上生成 Javascript 代码
【发布时间】:2017-02-16 10:48:48
【问题描述】:

我想要一个名为 'Movement' 的不同类别的块,其中包含两个块,分别称为 MoveForwardMoveBackward

在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 代码?

【问题讨论】:

    标签: javascript android xml blockly


    【解决方案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_forwardmove_backward)到 JavaScript 生成器函数的映射。每个生成器函数都在 JavaScript Block 对象中传递。这与 Blockly 网络版中随处使用的 API 相同。

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

    【讨论】:

      猜你喜欢
      • 2019-09-16
      • 2017-05-12
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 2015-11-24
      相关资源
      最近更新 更多