事件
每當工作區發生變更,就會觸發事件。這些事件會完整描述每個變更前後的狀態。
監聽事件
工作區有 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 工作區,並使用事件保持同步。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2024-11-08 (世界標準時間)。
[null,null,["上次更新時間:2024-11-08 (世界標準時間)。"],[[["Every workspace change triggers an event detailing the before and after state."],["Workspaces offer methods (`addChangeListener`, `removeChangeListener`) to listen for these events."],["Events can be used for various purposes like real-time code generation or triggering actions based on specific changes (e.g., a new comment)."],["Blocks can also have individual change listeners using the `onchange` function or `setOnChange`."],["Comprehensive event details are available in the Blockly reference documentation."]]],["Workspace changes trigger events, describing the before and after states. Listeners can be added using `addChangeListener` and removed with `removeChangeListener`. Listeners can react to specific events, like the creation of a comment, or monitor all events. Flyout events can be monitored by adding a listener to the flyout's workspace. Blocks can use an `onchange` function to listen for changes in their workspace. There are several event types as described in the documentation.\n"]]