blockly-- 事件

事件

工作区上的每个更改都会触发一个事件。这些事件充分描述了每个更改的前后状态。

监听事件

工作区具有addChangeListenerremoveChangeListener方法,可用于侦听事件流。一个示例是 实时生成代码。另一个示例是 最大块限制演示。通常,这两个示例都不关心触发事件是什么。他们只是查看工作区的当前状态。

一个更复杂的事件侦听器将查看触发事件。下面的示例检测用户何时创建其第一条评论,发出警报,然后停止收听,以便不再触发其他警报。

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实例之间进行同步的实时演示。

你可能感兴趣的:(blockly)