你将收获
通过本文,你将收获:
- 了解块的部分属性。
- 了解块的部分函数。
分析技巧
为了方便我们观察和调试块的属性,我们使用blockly
仓库,运行demo(请查看专栏第一篇文章:【Blockly开发教程】01 初识Blockly)。
然后打开控制台,使用Blockly
全局对象来分析块的属性。分析步骤如下:
// 把需要分析的块拖到工作区
// 获取工作区对象
var workspace = Blockly.getMainWorkspace()
// 获取工作区中的积木块列表
var blocks = workspace.getTopBlocks()
// 在blocks中找到需要分析的积木块对象,如
var block1 = blocks[0]
块的属性
在Blockly运行后,块的定义会转换为块对象的属性。块的属性包括:颜色(colour_)、连接(nextConnection、previousConnection)、输入列表(inputList)、禁用(disabled)、提示(tooltip)、上下文菜单(contextMenu)、父积木块(parentBlock_)、子积木块(childBlocks_)、可删除(deletable_)、可编辑(editable_)、可移动(movable_)、输出类型(outputShape_)、帮助链接(helpUrl)、是否在工具箱(isInFlyout)、类型(type)等。
基本概念如图:
颜色(colour_)
颜色属性用于定义块在工作区或工具箱中显示时的颜色。帮助于用户通过视觉区分不同类型的块,一般情况下,工具箱中一个分类下的积木块,颜色是一致的。
除了colour_
属性,定义了块的颜色,还有style
属性,定义了块的颜色、边框颜色、field颜色
说明如下:
colourPrimary
:主要颜色,通常用于块的主要背景。colourSecondary
:次要颜色,可能用于块的特定部分,如输入或输出连接区域的背景。colourTertiary
:第三颜色,可能用于更细节的部分,比如块的边框或特定元素的高亮。hat
:这个属性通常用于定义块的“帽子”形状,即块顶部的凸起部分,它可以为空字符串,表示没有特殊的帽子形状。
连接(nextConnection、previousConnection、targetConnection)
- previousConnection 表示块的上一个连接点对象,允许其他块通过它们的下一个连接点连接到此块。
- nextConnection 表示块的下一个连接点对象,用于将该块连接到其他块的前一个连接点上,形成执行序列。
connection
对象中,有个targetConnection
字段,表示该积木块连接的另外一个积木块的连接
对象,还不是另外一个积木块对象。
- 当积木块没有连接时,
targetConnection
值为null
。 - 当积木块连接了另一个积木块时,
targetConnection.sourceBlock_
则是另外一个连接的积木块对象。
字段图如下:
图中temp2是text_blocks
,第一个积木块,他连接的积木块是loop_blocks
。
获取第二个积木块的方式:
const block2 = temp2.nextConnection.targetConnection.sourceBlock_;
或者使用封装的、更简单的接口获取下一个积木块:
const block2 = temp2.getNextBlock()
对应这两种情况,我们通过下图来理解:
输入列表(inputList)
输入列表包含了块的所有输入定义,无论是值输入还是语句输入。
如下图积木块,有两个输入,一个是可以嵌入其他积木块的输入ValueInput
,另一个是内置下拉菜单,Blockly定义为DummyInput
对于输入,有这几个类型,也可以自定义,后续专门写一篇文章来细讲这块:
禁用(disabled)
禁用属性用于控制块是否可用。如果一个块被禁用,它通常显示为灰色,并且不能被用户交互。
查看属性:
可删除(deletable_)
可删除属性决定了用户是否可以通过用户界面删除这个块。如果设为不可删除,块将不能从工作区中移除。
当块的deletable_属性是false时,块不能被放进垃圾桶,右键菜单会隐藏删除选项。
可编辑(editable_)
可编辑属性控制块的文本是否可以被用户编辑。对于某些预定义的块或特定情况下的块,可能不允许用户编辑。
菜单也有所不同:
- 不可编辑:
- 可编辑:
可移动(movable_)
可移动属性决定了块是否可以在工作区中移动。如果设为不可移动,块的位置将固定,用户不能更改它。
提示(tooltip)
提示是当用户将鼠标悬停
在块上时显示的简短文本。它提供了关于块功能或用途的快速说明。
上下文菜单使能(contextMenu)
上下文菜单是指用户可以通过鼠标右键点击块时出现的菜单。这个菜单通常包含一些操作选项,如复制、粘贴、删除或重命名块。
contextMenu
用于