blockly-- 事件

事件

工作區上的每個更改都會觸發一個事件。這些事件充分描述了每個更改的前後狀態。

監聽事件

工作區具有addChangeListenerremoveChangeListener方法,可用於偵聽事件流。一個示例是 實時生成代碼。另一個示例是 最大塊限制演示。通常,這兩個示例都不關心觸發事件是什麼。他們只是查看工作區的當前狀態。

一個更復雜的事件偵聽器將查看觸發事件。下面的示例檢測用戶何時創建其第一條評論,發出警報,然後停止收聽,以便不再觸發其他警報。

function onFirstComment(event) {
  if (event.type == Blockly.Events.CHANGE &&
      event.element == 'comment' &&
      !event.oldValue && event.newValue) {
    alert('Congratulations on creating your first comment!')
    workspace.removeChangeListener(onFirstComment);
  }
}
workspace.addChangeListener(onFirstComment);
 

塊有另一種監聽事件流的方法。塊可以定義一個 onchange 函數,只要該塊的工作區發生更改,該函數就會被調用。

活動類型

所有事件共享以下公共屬性。

名稱 類型 描述
type string Blockly.Events.CREATE,Blockly.Events.DELETE,Blockly.Events.CHANGE,Blockly.Events.MOVE,Blockly.Events.UI。
workspaceId string UUID of workspace. The workspace can be found with Blockly.Workspace.getById(event.workspaceId)
blockId string UUID of block. The block can be found with workspace.getBlockById(event.blockId)
group string UUID of group. Some events are part of an indivisible group, such as inserting a statement in a stack.

Blockly.Events.BLOCK_CREATE

塊創建事件具有兩個附加屬性。

名稱 類型 描述
xml object 定義新塊和任何連接的子塊的XML樹。
ids array 包含新塊和任何連接的子塊的UUID的數組。

Blockly.Events.BLOCK_DELETE

塊刪除事件具有兩個附加屬性。

名稱 類型 描述
oldXml object 定義刪除的塊和任何連接的子塊的XML樹。
ids array 包含已刪除塊和任何連接的子塊的UUID的數組。

Blockly.Events.BLOCK_CHANGE

塊更改事件具有四個附加屬性。

名稱 類型 描述
element string  'field', 'comment', 'collapsed', 'disabled', 'inline', 'mutate' 
name string 字段名稱(如果這是對字段的更改)。
oldValue value 原始值。
newValue value 更改值。

Blockly.Events.BLOCK_MOVE

塊移動事件具有六個附加屬性。

名稱 類型 描述
oldParentId string 舊父塊的UUID。如果是頂級塊,則未定義。
oldInputName string 舊的輸入名稱。如果是頂級塊或父級的下一個塊,則未定義。
oldCoordinate object X和Y座標(如果它是頂級塊)。如果有父級,則未定義。
newParentId string 新父塊的UUID。如果是頂級塊,則未定義。
newInputName string 新父項的輸入名稱。如果是頂級塊或父級的下一個塊,則未定義。
newCoordinate object X和Y座標(如果它是頂級塊)。如果有父級,則未定義。

Blockly.Events.VAR_CREATE

變量創建事件具有兩個附加屬性。

名稱 類型 描述
varType string 變量的類型,例如“ int”或“ string”。不需要唯一。這將默認爲“”,這是一種特定類型。
varName string 變量的名稱。這在變量和過程中是唯一的。
varId string 變量的唯一ID。

Blockly.Events.VAR_DELETE

變量刪除事件具有兩個附加屬性。

名稱 類型 描述
varType string 變量的類型,例如“ int”或“ string”。不需要唯一。這將默認爲“”,這是一種特定類型。
varName string 變量的名稱。這在變量和過程中是唯一的。
varId string 變量的唯一ID。

Blockly.Events.VAR_RENAME

變量重命名事件具有兩個附加屬性。

名稱 類型 描述
oldName string 變量的當前名稱。這在變量和過程中是唯一的。
newName string 變量的新名稱。這在變量和過程中是唯一的。
varId string 變量的唯一ID。

Blockly.Events.UI

UI事件具有三個附加屬性。

名稱 類型 描述
element string 'selected', 'category', 'click', 'commentOpen', 'mutatorOpen', 'warningOpen', 'theme'
oldValue value 原始值。
newValue value 更改值。

可以預期,隨着時間的流逝,由UI事件表示的UI動作列表將變得更加全面。例如scrolling, zooming, dragging bubbles, etc等事件。

這是 使用事件在兩個Blockly實例之間進行同步的實時演示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章