title: 配置块 - 工具箱
Configure Blockly - Toolbox
原文链接:https://developers.google.com/blockly/guides/configure/android/toolbox
工具箱是从用户可以创建新块的侧面菜单。工具箱的结构使用XML指定,可以是节点树或字符串表示形式。如果您不喜欢手动输入XML,我们建议您查看Blockly开发人员工具Blockly Developer Tools。使用它,您可以构造一个工具箱,并使用可视化界面自动生成其工具箱XML。此XML资产路径在构造时传递给BlocklyController
。如果你的activity 继承了AbstractBlocklyActivity
,这是使用getToolboxContentsXmlPath()
返回的asset路径自动完成的:
@Override protected String getToolboxContentsXmlPath() {
return "default/toolbox.xml";
}
这里是一个最小的例子,使用节点树:
<toolbox>
<block type = "controls_if" > </block>
<block type="controls_whileUntil"></block >
</toolbox>
此工具箱加载这些块:
如果存在少量的块,则可以在没有任何类别的情况下显示它们(如在上面的最小示例中)。在这种简单模式下,所有可用的块都显示在工具箱中。
分类
工具箱中的块可以按类别组织。这里有两个类别('控制'和'逻辑'),每个包含三个块:
<toolbox>
<category name="Control">
<block type="controls_if"></block>
<block type="controls_whileUntil"></block>
<block type="controls_for"></block>
</category>
<category name="Logic">
<block type="logic_compare"></block>
<block type="logic_operation"></block>
<block type="logic_boolean"></block>
</category>
</toolbox>
下面是生成的工具箱,点击“Logic”类别,以便可以看到弹出窗口中的三个逻辑块:
可以使用可选的颜色属性为每个类别分配颜色。注意英国的拼写。颜色是定义色调的数字(0-360)。
<toolbox>
<category name="Logic" colour="210">...</category>
<category name="Loops" colour="120">...</category>
<category name="Math" colour="230">...</category>
<category name="Colour" colour="20">...</category>
</toolbox>
此颜色在块后面的背景上显示为浅色。
标签颜色正在等待处理(问题#296)
块组
XML可以包含定制块或块组。这里有四个块:
-
一个简单的logic_boolean块:
-
已修改为显示数字42而不是默认值0的math_number块:
-
一个控制块,有三个math_number块连接到它:
-
一个math_arithmetic块,它有两个math_number个阴影块连接到它:
下面是在工具箱中生成这四个块的代码:
<toolbox>
<block type="logic_boolean"></block>
<block type="math_number">
<field name="NUM">42</field>
</block>
<block type="controls_for">
<value name="FROM">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
<value name="TO">
<block type="math_number">
<field name="NUM">10</field>
</block>
</value>
<value name="BY">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
<value name="B">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</toolbox>
这些自定义块或组的XML与Blockly的XML保存格式相同。因此,为这些块构建XML的最简单的方法是使用Code应用程序构建块,然后切换到XML选项卡并复制结果。 x,y和id属性被工具箱忽略,可能会被删除。
阴影块是执行几个功能的占位符块:
- 它们指示其父块的默认值。
- 它们允许用户直接输入值,而不需要提取数字或字符串块。
- 与常规块不同,如果用户在其上放置一个块,它们将被替换。
- 它们通知用户期望的值的类型。
阴影块不能直接使用代码应用程序构建。相反,可以使用常规块,然后将XML中的<block ...>
和</ block>
更改为<shadow ...>
和</ shadow>
。
更改工具箱
基于AbstractBlocklyActivity
的应用程序可以通过调用this.reloadToolbox()
随时更改工具箱中可用的块。这将触发对getToolboxContentsXmlPath()
的新调用,其中应用程序可以返回一个新值。