活动

工作区中的每项更改都会触发事件。这些事件会完整描述每次更改之前和之后的状态。

监听事件

工作区包含 addChangeListenerremoveChangeListener 方法, 用于监听事件流。其中一个例子是 实时生成代码。 另一个示例是“最大分块限制”演示。与往常一样,这两个例子并不关心触发 事件。它们只会查看工作区的当前状态。

更复杂的事件监听器会查看触发事件。通过 以下示例会检测用户何时创建了第一条评论, 发出提醒,然后停止监听,从而不再触发其他提醒。

function onFirstComment(event) {
  if (event.type == Blockly.Events.BLOCK_CHANGE &&
      event.element == 'comment' &&
      !event.oldValue && event.newValue) {
    alert('Congratulations on creating your first comment!')
    workspace.removeChangeListener(onFirstComment);
  }
}
workspace.addChangeListener(onFirstComment);

要监听浮出控件内发生的任何事件,监听器可 添加到浮出控件的工作区。

var flyoutWorkspace = yourWorkspace.getFlyout().getWorkspace();
flyoutWorkspace.addChangeListener(onFirstComment);

区块还有另一种监听事件流的方法。块可以定义 onchange 函数,也可以使用 setOnChange 设置一个函数,以便在块的工作区发生更改时调用该函数。

事件类型

如需了解各个事件的相关信息,请参阅参考文档

演示

如需了解如何使用事件执行一些很酷的操作,您可以查看镜像演示。此演示版有两个使用事件保持同步的 Blockly 工作区。