事件
工作区上的每个更改都会触发一个事件。这些事件充分描述了每个更改的前后状态。
监听事件
工作区具有addChangeListener和removeChangeListener方法,可用于侦听事件流。一个示例是 实时生成代码。另一个示例是 最大块限制演示。通常,这两个示例都不关心触发事件是什么。他们只是查看工作区的当前状态。
一个更复杂的事件侦听器将查看触发事件。下面的示例检测用户何时创建其第一条评论,发出警报,然后停止收听,以便不再触发其他警报。
function onFirstComment(event) {
if (event.type == Blockly.Events.CHANGE &&
event.element == 'comment' &&
!event.oldValue && event.newValue) {
alert('Congratulations on creating your first comment!')
workspace.removeChangeListener(onFirstComment);
}
}
workspace.addChangeListener(onFirstComment);
块有另一种监听事件流的方法。块可以定义一个 onchange 函数,只要该块的工作区发生更改,该函数就会被调用。
活动类型
所有事件共享以下公共属性。
| 名称 | 类型 | 描述 |
|---|---|---|
type | string | Blockly.Events.CREATE,Blockly.Events.DELETE,Blockly.Events.CHANGE,Blockly.Events.MOVE,Blockly.Events.UI。 |
workspaceId | string | UUID of workspace. The workspace can be found with Blockly.Workspace.getById(event.workspaceId) |
blockId | string | UUID of block. The block can be found with workspace.getBlockById(event.blockId) |
group | string | UUID of group. Some events are part of an indivisible group, such as inserting a statement in a stack. |
Blockly.Events.BLOCK_CREATE
块创建事件具有两个附加属性。
| 名称 | 类型 | 描述 |
|---|---|---|
xml | object | 定义新块和任何连接的子块的XML树。 |
ids | array | 包含新块和任何连接的子块的UUID的数组。 |
Blockly.Events.BLOCK_DELETE
块删除事件具有两个附加属性。
| 名称 | 类型 | 描述 |
|---|---|---|
oldXml | object | 定义删除的块和任何连接的子块的XML树。 |
ids | array | 包含已删除块和任何连接的子块的UUID的数组。 |
Blockly.Events.BLOCK_CHANGE
块更改事件具有四个附加属性。
| 名称 | 类型 | 描述 |
|---|---|---|
element | string | 'field', 'comment', 'collapsed', 'disabled', 'inline', 'mutate' |
name | string | 字段名称(如果这是对字段的更改)。 |
oldValue | value | 原始值。 |
newValue | value | 更改值。 |
Blockly.Events.BLOCK_MOVE
块移动事件具有六个附加属性。
| 名称 | 类型 | 描述 |
|---|---|---|
oldParentId | string | 旧父块的UUID。如果是顶级块,则未定义。 |
oldInputName | string | 旧的输入名称。如果是顶级块或父级的下一个块,则未定义。 |
oldCoordinate | object | X和Y坐标(如果它是顶级块)。如果有父级,则未定义。 |
newParentId | string | 新父块的UUID。如果是顶级块,则未定义。 |
newInputName | string | 新父项的输入名称。如果是顶级块或父级的下一个块,则未定义。 |
newCoordinate | object | X和Y坐标(如果它是顶级块)。如果有父级,则未定义。 |
Blockly.Events.VAR_CREATE
变量创建事件具有两个附加属性。
| 名称 | 类型 | 描述 |
|---|---|---|
varType | string | 变量的类型,例如“ int”或“ string”。不需要唯一。这将默认为“”,这是一种特定类型。 |
varName | string | 变量的名称。这在变量和过程中是唯一的。 |
varId | string | 变量的唯一ID。 |
Blockly.Events.VAR_DELETE
变量删除事件具有两个附加属性。
| 名称 | 类型 | 描述 |
|---|---|---|
varType | string | 变量的类型,例如“ int”或“ string”。不需要唯一。这将默认为“”,这是一种特定类型。 |
varName | string | 变量的名称。这在变量和过程中是唯一的。 |
varId | string | 变量的唯一ID。 |
Blockly.Events.VAR_RENAME
变量重命名事件具有两个附加属性。
| 名称 | 类型 | 描述 |
|---|---|---|
oldName | string | 变量的当前名称。这在变量和过程中是唯一的。 |
newName | string | 变量的新名称。这在变量和过程中是唯一的。 |
varId | string | 变量的唯一ID。 |
Blockly.Events.UI
UI事件具有三个附加属性。
| 名称 | 类型 | 描述 |
|---|---|---|
element | string | 'selected', 'category', 'click', 'commentOpen', 'mutatorOpen', 'warningOpen', 'theme' |
oldValue | value | 原始值。 |
newValue | value | 更改值。 |
可以预期,随着时间的流逝,由UI事件表示的UI动作列表将变得更加全面。例如scrolling, zooming, dragging bubbles, etc等事件。
这是 使用事件在两个Blockly实例之间进行同步的实时演示。
1213

被折叠的 条评论
为什么被折叠?



