事件命名空間
類別
類別 | 說明 |
---|---|
BlockBase | 用於任何與區塊相關的事件的抽象類別。 |
BlockChange | 當區塊的某些元素 (例如欄位值、註解等) 發生變更時,會通知監聽器。 |
BlockCreate | 在建立區塊 (或連結的區塊堆疊) 時通知監聽器。 |
BlockDelete | 在刪除區塊 (或連結的區塊堆疊) 時通知監聽器。 |
BlockDrag | 在手動拖曳/放置區塊時通知監聽器。 |
BlockFieldIntermediateChange | 當區塊欄位的值已變更,但變更尚未完成,且預期會接著發生區塊變更事件時,會通知監聽器。 |
BlockMove | 在區塊移動時通知監聽器。這可能是從一個連線到另一個連線,或是從工作區的一個位置到另一個位置。 |
BubbleOpen | 泡泡開啟事件的類別。 |
點擊 | 通知事件監聽器,指出某個 Blockly 元素已被點選。 |
CommentBase | 留言事件的抽象類別。 |
CommentChange | 通知監聽器,工作區註解的內容已變更。 |
CommentCollapse | |
CommentCreate | 通知監聽器,指出已建立工作區註解。 |
CommentDelete | 通知事件監聽器,工作區註解已刪除。 |
CommentDrag | 在使用者手動拖曳/放置留言時通知監聽器。 |
CommentMove | 通知監聽器工作區的留言已移至其他位置。 |
CommentResize | 通知監聽器,工作區註解已調整大小。 |
FinishedLoading | 當工作區完成從 JSON/XML 反序列化時,會通知事件監聽器。 |
已選取 | 所選事件的類別。通知監聽器已選取新元素。 |
ThemeChange | 通知監聽器工作區主題已變更。 |
ToolboxItemSelect | 通知監聽器已選取工具箱項目。 |
TrashcanOpen | 在垃圾桶開啟或關閉時通知監聽器。 |
UiBase | UI 事件的基本類別。UI 事件是指不需要透過網路傳送的事件,才能讓多使用者編輯功能運作 (例如捲動工作區、縮放、開啟工具箱分類)。UI 事件不會復原或重做。 |
VarBase | 變數事件的抽象類別。 |
VarCreate | 通知監聽器,已建立變數模型。 |
VarDelete | 通知監聽器變數模型已刪除。 |
VarRename | 通知監聽器變數模型已重新命名。 |
VarTypeChange | 通知監聽器變數類型已變更。 |
ViewportChange | 通知監聽器,工作區域介面的大小或位置已變更。 不會在工作區本身調整大小時發出通知。 |
抽象類別
抽象類別 | 說明 |
---|---|
摘要 | 事件的抽象類別。 |
列舉
Enumeration | 說明 |
---|---|
BubbleType | |
ClickTarget |
函式
函式 | 說明 |
---|---|
clearPendingUndo() | 修改待處理的復原事件,以便在事件觸發時不會進入復原堆疊。由 Workspace.clearUndo 呼叫。 |
disable() | 停止傳送事件。每個對此函式的呼叫都必須呼叫 enable。 |
disableOrphans(event) | 設定是否要根據連線是否正確,停用某個區塊。在所有區塊都應連結至頂層區塊的應用程式中使用。 |
enable() | 開始傳送事件。除非在呼叫對應的停用方法時,事件已停用。 |
filter(queue) | 合併重複事件、移除空值事件,並重新記錄 BlockChange 事件,藉此篩選佇列中的事件。 這個函式的歷史記錄: 這個函式最初是在 cf257ea5 版本中新增,目的是大幅減少分派事件的總數。一開始,這項問題只影響 BlockMove 事件,但後來其他事件也受到影響。 我們新增程式碼,以便重新排序在 5578458 次版本中新增的 BlockChange 事件,但原因不明,但很可能是在嘗試修正區塊變異期間事件排序問題時,只部分成功的結果。這個程式碼應該會在合併和移除空值之前,新增至函式的頂端,但基於現在已遺忘的原因,它被新增至底部。請參閱這些錯誤調查,進一步瞭解潛在問題,以及由於這個不完整/不正確的修正而發生的部分錯誤: 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 (請注意,事件會以相反順序與順序相加)。我們最初選擇的修正方式是新增程式碼 (在 PR #7069 中),以便在 fireNow 後,為任何剛參與事件調度的作業空間,執行後置篩選的 .undoStack_ 和 .redoStack_。這個方法顯然解決了問題,但也增加了相當程度的額外複雜性,讓人難以推論如何處理撤銷/重做事件,因此我們移除了來自撤銷的呼叫和後置處理程式碼,並將 forward=true 設為預設值,同時淘汰了以 forward=false 呼叫函式的做法。 同時,我們也將用於重新排序 BlockChange 事件的錯誤程式碼,改用新函式 enqueueEvent 中的同功能但錯誤較少的版本,以便從 fireInternal 呼叫,確保在呼叫篩選器時,事件會以正確的順序排列。 此外,我們也修改了事件合併程式碼,只會合併緊鄰的事件。這麼做可簡化實作方式,同時確保合併事件不會導致事件順序重排。 |
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」混淆,因為「bumping」會讓已中斷的連線不會顯示為已連線。 |
變更 | |
點選 | |
COMMENT_CHANGE | |
COMMENT_CREATE | |
COMMENT_DELETE | |
COMMENT_DRAG | |
COMMENT_MOVE | |
COMMENT_RESIZE | |
CREATE | |
刪除 | |
FINISHED_LOADING | |
MOVE | |
已選取 | |
THEME_CHANGE | |
TOOLBOX_ITEM_SELECT | |
TRASHCAN_OPEN | |
UI | |
VAR_CREATE | |
VAR_DELETE | |
VAR_RENAME | |
VIEWPORT_CHANGE |
型別別名
類型別名 | 說明 |
---|---|
BumpEvent | 導致物件被推回工作區可見部分的事件類型。 請勿與「bumping」混淆,因為「bumping」會讓已中斷的連線不會顯示為已連線。 |