title: 配置块 - 添加自定义块
Configure Blockly — Add Custom Blocks
原文地址:https://developers.google.com/blockly/guides/configure/android/add-custom-blocks
添加自定义块
块由三个组件组成:
- 块定义对象:定义块的外观和行为,包括文本,颜色,字段和连接。
- 工具箱引用:对工具箱XML中块类型的引用,因此用户可以将其添加到工作区。
- 生成器函数:生成此块的代码字符串。它总是用JavaScript编写,即使目标语言不是JavaScript。
虽然Blockly的Web版本也支持在JavaScript中以编程方式构建块定义对象,但Blockly for Android不支持此操作。
块定义
创建新块定义的最简单的方法是使用Blockly开发工具。Blockly Developer Tools.于Android版Blockly仅支持JSON格式的块定义,因此将工厂的“语言代码”设置为JSON.有关此格式的详细信息,请点击此处here。当使用AbstractBlocklyActivity
时,块定义文件由getBlockDefinitionsJsonPaths()
提供,它返回应用程序资产路径的列表。可以通过调用reloadBlockDefinitions()
重新加载块定义。使用原始BlocklyController
时,通过BlocklyController.addBlockDefinitions(..)
方法之一添加块定义。
可以加载多个.json文件,但应确保块类型ID是唯一的。
添加工具箱参考
一旦系统知道你的新块,你也需要让你的用户知道。工具箱向用户显示可用的块。 Blockly使用与Web上的Blockly相同的XML工具箱定义文件,这里详述here。
abstractBlocklyActivity
用getToolboxContentsXmlPath()
提供的.xml资源文件的内容填充工具箱,reloadToolbox()
将重新加载工具箱(再次调用getToolboxContentsXmlPath()
)。
一般来说,大多数块应该包含在工具箱中,但有些可以省略。这可以用于支持已弃用的块,教授单个概念或隐藏当前无法使用的块。有关更多详细信息,请参阅填充工具箱Populate the Toolbox。
添加生成器函数
最后,要将块转换为代码,请将块类型与JavaScript生成器函数配对。
有关详细信息,请参阅使用自定义生成器Use Custom Generators。