事件命名空间
类
类 | 说明 |
---|---|
BlockBase | 与区块相关的任何事件的抽象类。 |
BlockChange | 当某个分块的某些元素发生变化时(例如字段值、注释等)通知监听器。 |
BlockCreate | 在创建块(或连接的块堆栈)时通知监听器。 |
BlockDelete | 在删除某个分块(或连接的分块堆栈)时通知监听器。 |
BlockDrag | 在手动拖放某个代码块时通知监听器。 |
BlockFieldIntermediateChange | 当某个分块字段的值发生变化但尚未完成更改,并且预计会跟随分块更改事件时,通知监听器。 |
BlockMove | 在移动某个代码块时通知监听器。这可以是从一个连接到另一个连接,也可以是从工作区的一个位置到另一个位置。 |
BubbleOpen | 气泡打开事件的类。 |
点击 | 通知监听器某个块状元素已被点击。 |
CommentBase | 评论事件的抽象类。 |
CommentChange | 通知监听器工作区评论的内容已更改。 |
CommentCollapse | |
CommentCreate | 通知监听器创建了工作区评论。 |
CommentDelete | 通知监听器工作区评论已被删除。 |
CommentDrag | 在手动拖放评论时通知监听器。 |
CommentMove | 通知监听器工作区评论已移动。 |
CommentResize | 通知监听器工作区评论已调整大小。 |
FinishedLoading | 当工作区完成从 JSON/XML 反序列化后,通知监听器。 |
已选择 | 所选事件的类。通知监听器已选择新元素。 |
ThemeChange | 通知监听器工作区主题已更改。 |
ToolboxItemSelect | 通知监听器已选择某个工具箱项。 |
TrashcanOpen | 在回收站打开或关闭时通知监听器。 |
UiBase | 界面事件的基类。界面事件是指无需通过线程发送即可实现多用户编辑的事件(例如滚动工作区、缩放、打开工具箱类别)。界面事件无法撤消或重做。 |
VarBase | 可变事件的抽象类。 |
VarCreate | 通知监听器已创建变量模型。 |
VarDelete | 通知监听器变量模型已被删除。 |
VarRename | 通知监听器变量模型已重命名。 |
VarTypeChange | 通知监听器变量的类型已更改。 |
ViewportChange | 通知监听器工作区 Surface 的位置或缩放比例已更改。 当工作区本身调整大小时,不会发出通知。 |
抽象类
抽象类 | 说明 |
---|---|
摘要 | 事件的抽象类。 |
枚举
枚举 | 说明 |
---|---|
BubbleType | |
ClickTarget |
函数
函数 | 说明 |
---|---|
clearPendingUndo() | 修改待处理的撤消事件,以便在这些事件触发时,它们不会进入撤消堆栈。由 Workspace.clearUndo 调用。 |
disable() | 停止发送事件。对此函数的每次调用都必须调用 enable。 |
disableOrphans(event) | 根据块是否已正确连接,设置块是否已停用。在所有块都应连接到顶部块的应用中使用此模式。 |
enable() | 开始发送事件。除非在发出相应的停用调用时事件已停用。 |
filter(queue) | 通过合并重复项、移除 null 事件和重新记录 BlockChange 事件来过滤队列中的事件。 此函数的历史记录: 此函数最初是在提交版本 cf257ea5 中添加的,目的是大幅减少分派的事件总数。最初,此问题仅会影响 BlockMove 事件,但后来又影响了其他事件。 添加了代码来重新排列提交 5578458 中添加的 BlockChange 事件,原因不明,但很可能是在尝试解决块更新期间事件排序问题时,仅部分成功。此代码可能应在合并和移除 null 之前添加到函数顶部,但出于现在已忘记的原因,被添加到了底部。如需更详细地了解根本问题以及因此不完整/不正确的修复而导致的一些失败情况,请参阅以下 bug 调查: https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351 后来,在 PR #1205 中,原始的 O(n^2) 实现被线性时间实现取代,但随后又进行了其他修复。 2024 年 8 月,我们对许多流程进行了重大简化: 此函数之前是从 Workspace.prototype.undo 调用的,但此函数对事件的更改是导致问题 7026 的原因(请注意,事件在反向顺序与正向顺序下会组合不同)。最初为此问题选择的解决方法是在 fireNow 中添加了代码(在 PR #7069 中),以对刚刚参与调度事件的任何工作区的 .undoStack_ 和 .redoStack_ 进行后续过滤;这显然解决了问题,但增加了相当多的额外复杂性,并且难以推理撤消/重做事件的处理方式,因此移除了从撤消调用和后处理代码,并将 forward=true 设为默认值,同时废弃了使用 forward=false 调用函数的做法。 同时,用于重新排列 BlockChange 事件的存在 bug 的代码已替换为通过 fireInternal 调用的 enqueueEvent 新函数中提供的功能的 bug 较少的版本,从而确保在调用过滤器时事件将按正确的顺序排列。 此外,我们修改了事件合并代码,以便仅合并紧挨的事件。这简化了实现,同时确保了事件合并不会导致事件重新排序。 |
fire(event) | 将事件加入队列,以便分派给更改监听器。 注意: - 事件会加入队列,直到超时为止(通常是在渲染完成后或当前微任务结束时,如果未在浏览器中运行)。- 加入队列的事件会与之后加入队列的事件组合,从而发生破坏性修改,但仅在事件触发之前。- 事件会通过受影响工作区的 fireChangeListener 方法分派。 |
fromJson(json, workspace) | 将 JSON 解码为事件。 |
get(eventType) | 从注册表中获取特定事件类型的类。 |
getGroup() | 当前组。 |
getRecordUndo() | 返回事件是否会添加到撤消堆栈。 |
isEnabled() | 返回是否可以触发事件。 |
setGroup(state) | 开始或停止组合。 |
setRecordUndo(newValue) | 设置是否应将事件添加到撤消堆栈。 |
接口
变量
变量 | 说明 |
---|---|
BLOCK_CHANGE | |
BLOCK_CREATE | |
BLOCK_DELETE | |
BLOCK_DRAG | |
BLOCK_FIELD_INTERMEDIATE_CHANGE | |
BLOCK_MOVE | |
BUBBLE_OPEN | |
BUMP_EVENTS | 导致对象被弹回到工作区的可见部分的事件列表。 请勿与“bumping”混淆,以免断开连接的连接看起来仍处于连接状态。 |
更改 | |
点击 | |
COMMENT_CHANGE | |
COMMENT_CREATE | |
COMMENT_DELETE | |
COMMENT_DRAG | |
COMMENT_MOVE | |
COMMENT_RESIZE | |
创建 | |
DELETE | |
FINISHED_LOADING | |
MOVE | |
已选 | |
THEME_CHANGE | |
TOOLBOX_ITEM_SELECT | |
TRASHCAN_OPEN | |
界面 | |
VAR_CREATE | |
VAR_DELETE | |
VAR_RENAME | |
VIEWPORT_CHANGE |
类型别名
类型别名 | 说明 |
---|---|
BumpEvent | 导致对象被弹回到工作区的可见部分的事件类型。 请勿与“bumping”混淆,以免断开连接的连接看起来仍处于连接状态。 |