工作区中的每项更改都会触发事件。这些事件会完整描述每次更改之前和之后的状态。
监听事件
工作区包含 addChangeListener
和 removeChangeListener
方法,
用于监听事件流。其中一个例子是
实时生成代码。
另一个示例是“最大分块限制”演示。与往常一样,这两个例子并不关心触发
事件。它们只会查看工作区的当前状态。
更复杂的事件监听器会查看触发事件。通过 以下示例会检测用户何时创建了第一条评论, 发出提醒,然后停止监听,从而不再触发其他提醒。
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 工作区。