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 函数,只要该块的工作区发生更改,该函数就会被调用。

活动类型

所有事件共享以下公共属性。

名称类型描述
typestringBlockly.Events.CREATE,Blockly.Events.DELETE,Blockly.Events.CHANGE,Blockly.Events.MOVE,Blockly.Events.UI。
workspaceIdstringUUID of workspace. The workspace can be found with Blockly.Workspace.getById(event.workspaceId)
blockIdstringUUID of block. The block can be found with workspace.getBlockById(event.blockId)
groupstringUUID of group. Some events are part of an indivisible group, such as inserting a statement in a stack.

Blockly.Events.BLOCK_CREATE

块创建事件具有两个附加属性。

名称类型描述
xmlobject定义新块和任何连接的子块的XML树。
idsarray包含新块和任何连接的子块的UUID的数组。

Blockly.Events.BLOCK_DELETE

块删除事件具有两个附加属性。

名称类型描述
oldXmlobject定义删除的块和任何连接的子块的XML树。
idsarray包含已删除块和任何连接的子块的UUID的数组。

Blockly.Events.BLOCK_CHANGE

块更改事件具有四个附加属性。

名称类型描述
elementstring 'field', 'comment', 'collapsed', 'disabled', 'inline', 'mutate' 
namestring字段名称(如果这是对字段的更改)。
oldValuevalue原始值。
newValuevalue更改值。

Blockly.Events.BLOCK_MOVE

块移动事件具有六个附加属性。

名称类型描述
oldParentIdstring旧父块的UUID。如果是顶级块,则未定义。
oldInputNamestring旧的输入名称。如果是顶级块或父级的下一个块,则未定义。
oldCoordinateobjectX和Y坐标(如果它是顶级块)。如果有父级,则未定义。
newParentIdstring新父块的UUID。如果是顶级块,则未定义。
newInputNamestring新父项的输入名称。如果是顶级块或父级的下一个块,则未定义。
newCoordinateobjectX和Y坐标(如果它是顶级块)。如果有父级,则未定义。

Blockly.Events.VAR_CREATE

变量创建事件具有两个附加属性。

名称类型描述
varTypestring变量的类型,例如“ int”或“ string”。不需要唯一。这将默认为“”,这是一种特定类型。
varNamestring变量的名称。这在变量和过程中是唯一的。
varIdstring变量的唯一ID。

Blockly.Events.VAR_DELETE

变量删除事件具有两个附加属性。

名称类型描述
varTypestring变量的类型,例如“ int”或“ string”。不需要唯一。这将默认为“”,这是一种特定类型。
varNamestring变量的名称。这在变量和过程中是唯一的。
varIdstring变量的唯一ID。

Blockly.Events.VAR_RENAME

变量重命名事件具有两个附加属性。

名称类型描述
oldNamestring变量的当前名称。这在变量和过程中是唯一的。
newNamestring变量的新名称。这在变量和过程中是唯一的。
varIdstring变量的唯一ID。

Blockly.Events.UI

UI事件具有三个附加属性。

名称类型描述
elementstring'selected', 'category', 'click', 'commentOpen', 'mutatorOpen', 'warningOpen', 'theme'
oldValuevalue原始值。
newValuevalue更改值。

可以预期,随着时间的流逝,由UI事件表示的UI动作列表将变得更加全面。例如scrolling, zooming, dragging bubbles, etc等事件。

这是 使用事件在两个Blockly实例之间进行同步的实时演示

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值