事件

每當工作區發生變更,就會觸發事件。這些事件會完整說明每項變更的前後狀態。

監聽事件

工作區具有 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 工作區,會使用事件保持同步。