Каждое изменение в рабочей области вызывает событие. Эти события полностью описывают состояние до и после каждого изменения.
Прослушивание событий
В рабочих областях есть методы 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, которые синхронизируются с помощью событий.