блочно > События

Пространство имен событий

Классы

Сорт Описание
БлокБаза Абстрактный класс для любого события, связанного с блоками.
БлокироватьИзменить Уведомляет слушателей об изменении какого-либо элемента блока (например, значений полей, комментариев и т. д.).
БлокСоздать Уведомляет слушателей о создании блока (или связанного стека блоков).
БлокироватьУдалить Уведомляет слушателей об удалении блока (или связанного стека блоков).
БлокДраг Уведомляет слушателей, когда блок перетаскивается вручную.
БлокПолеПромежуточноеИзменение Уведомляет слушателей, когда значение поля блока изменилось, но изменение еще не завершено и, как ожидается, за ним последует событие изменения блока.
БлокироватьПеремещение Уведомляет слушателей, когда блок перемещается. Это может быть из одного соединения в другое или из одного места в рабочей области в другое.
BubbleOpen Класс для мероприятия по открытию пузыря.
Нажмите Уведомляет слушателей о щелчке по какому-либо блочному элементу.
База комментариев Абстрактный класс для события комментария.
КомментарийИзменить Уведомляет слушателей об изменении содержимого комментария рабочей области.
КомментарийСвернуть
КомментарийСоздать Уведомляет слушателей о создании комментария к рабочей области.
КомментарийУдалить Уведомляет слушателей об удалении комментария к рабочему пространству.
КомментарийПеретащите Уведомляет слушателей, когда комментарий перетаскивается вручную.
КомментарийПереместить Уведомляет слушателей о том, что комментарий к рабочему пространству был перемещен.
КомментарийИзменить размер Уведомляет слушателей об изменении размера комментария рабочей области.
ЗавершеноЗагрузка Уведомляет слушателей, когда рабочая область завершила десериализацию из JSON/XML.
Выбрано Класс для выбранного события. Уведомляет слушателей о том, что выбран новый элемент.
ТемаИзменить Уведомляет слушателей об изменении темы рабочего пространства.
Панель инструментовВыбрать элемент Уведомляет слушателей о том, что выбран элемент панели инструментов.
Мусорное ведроОткрыто Уведомляет слушателей об открытии или закрытии мусорной корзины.
УиБасе Базовый класс для события пользовательского интерфейса. События пользовательского интерфейса — это события, которые не нужно отправлять по сети для работы многопользовательского редактирования (например, прокрутка рабочей области, масштабирование, открытие категорий панели инструментов). События пользовательского интерфейса не отменяют и не восстанавливают.
VarBase Абстрактный класс для переменного события.
VarCreate Уведомляет слушателей о создании переменной модели.
VarDelete Уведомляет слушателей об удалении переменной модели.
VarRename Уведомляет слушателей о том, что модель переменной была переименована.
VarTypeChange Уведомляет слушателей об изменении типа переменной.
Видовое окноИзменить

Уведомляет слушателей об изменении положения или масштаба поверхности рабочего пространства.

Не уведомляет об изменении размера самого рабочего пространства.

Абстрактные классы

Абстрактный класс Описание
Абстрактный Абстрактный класс для события.

Перечисления

Перечисление Описание
Тип пузыря
НажмитеЦель

Функции

Функция Описание
clearPendingUndo() Измените ожидающие события отмены так, чтобы при их запуске они не попадали в стек отмены. Вызывается Workspace.clearUndo.
запрещать() Остановить отправку событий. Каждый вызов этой функции ДОЛЖЕН также вызывать enable.
отключитьСироты(событие) Установите, если блок отключен в зависимости от того, правильно ли он подключен. Используйте это в приложениях, где все блоки должны быть подключены к верхнему блоку.
давать возможность() Начать отправку событий. Если только события не были уже отключены, когда был сделан соответствующий вызов для отключения.
фильтр(очередь)

Отфильтруйте события в очереди, объединив дубликаты, удалив нулевые события и переупорядочив события BlockChange.

История этой функции:

Эта функция была изначально добавлена ​​в коммите cf257ea5 с намерением резко сократить общее количество отправленных событий. Изначально она влияла только на события BlockMove, но со временем были добавлены и другие.

Код был добавлен для переупорядочивания событий BlockChange, добавленных в коммите 5578458, по неопределенным причинам, но, скорее всего, как часть только-частично-успешной попытки исправить проблемы с порядком событий во время мутаций блоков. Этот код, вероятно, должен был быть добавлен в начало функции, перед слиянием и удалением null, но был добавлен в конец по теперь-забытым причинам. См. эти расследования ошибок для более полного обсуждения основной проблемы и некоторых сбоев, которые возникли из-за этого неполного/неправильного исправления:

https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351

Позднее, в PR #1205, исходная реализация O(n^2) была заменена реализацией с линейным временем, хотя впоследствии были внесены дополнительные исправления.

В августе 2024 года был внесен ряд существенных упрощений:

Эта функция ранее вызывалась из Workspace.prototype.undo, но мутация событий этой функцией была причиной проблемы № 7026 (обратите внимание, что события будут по-разному объединяться в обратном порядке по сравнению с прямым). Первоначально выбранным исправлением для этого было добавление (в PR № 7069) кода в fireNow для пост-фильтрации .undoStack_ и .redoStack_ любого рабочего пространства, которое только что было задействовано в отправке событий; это, по-видимому, решило проблему, но добавило значительную дополнительную сложность и затруднило рассуждения о том, как события обрабатываются для отмены/повтора, поэтому и вызов из undo, и код пост-обработки были удалены, а forward=true был сделан значением по умолчанию, в то время как вызов функции с forward=false был объявлен устаревшим.

В то же время ошибочный код для переупорядочивания событий BlockChange был заменен менее ошибочной версией той же функциональности в новой функции enqueueEvent, вызываемой из fireInternal, что гарантирует, что события будут располагаться в правильном порядке во время вызова фильтра.

Кроме того, код слияния событий был изменен таким образом, чтобы объединялись только непосредственно соседние события. Это упростило реализацию, одновременно гарантируя, что слияние событий не приведет к их переупорядочиванию.

пожар(событие)

Поставьте событие в очередь для отправки на смену слушателей.

Примечания:

- События ставятся в очередь до истечения времени ожидания, обычно после завершения рендеринга или в конце текущей микрозадачи, если она не запущена в браузере. - События, поставленные в очередь, могут быть подвергнуты разрушительной модификации путем объединения с событиями, поставленными в очередь позже, но только до тех пор, пока они не будут запущены. - События отправляются с помощью метода fireChangeListener в затронутой рабочей области.

fromJson(json, рабочее пространство) Декодировать JSON в событие.
получить(типсобытия) Получает класс для определенного типа события из реестра.
получитьГруппу() Текущая группа.
получитьRecordUndo() Возвращает, будут ли события добавлены в стек отмены.
isEnabled() Возвращает, могут ли быть запущены события или нет.
setGroup(состояние) Создать или остановить группу.
setRecordUndo(новое значение) Устанавливает, следует ли добавлять события в стек отмены.

Интерфейсы

Интерфейс Описание
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
БлокироватьУдалитьJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
ClickJson
КомментарийBaseJson
КомментарийИзменитьJson
КомментарийCollapseJson
КомментарийСоздатьJson
КомментарийDragJson
КомментарийMoveJson
КомментарийResizeJson
ВыбранныйJson
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

Переменные

Переменная Описание
BLOCK_CHANGE
БЛОК_СОЗДАТЬ
БЛОК_УДАЛИТЬ
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
ПУЗЫРЬ_ОТКРЫТ
СОБЫТИЯ_БУМПА

Список событий, которые приводят к возвращению объектов в видимую часть рабочего пространства.

Не путать с подменой, чтобы разъединенные соединения не выглядели соединенными.

ИЗМЕНЯТЬ
ЩЕЛКНИТЕ
ИЗМЕНИТЬ_КОММЕНТАРИЙ
КОММЕНТАРИЙ_СОЗДАТЬ
КОММЕНТАРИЙ_УДАЛИТЬ
КОММЕНТАРИЙ_ПЕРЕЗАГРУЗИТЬ
КОММЕНТАРИЙ_MOVE
ИЗМЕНИТЬ_РАЗМЕР_КОММЕНТАРИЯ
СОЗДАВАТЬ
УДАЛИТЬ
ЗАГРУЗКА_ЗАВЕРШЕНА
ДВИГАТЬСЯ
ВЫБРАНО
ИЗМЕНЕНИЕ_ТЕМЫ
TOOLBOX_ITEM_SELECT
МУСОРНЫЙ КОНТЕЙНЕР_ОТКРЫТ
Пользовательский интерфейс
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

Псевдонимы типа

Тип Псевдоним Описание
BumpEvent

Тип событий, которые приводят к возвращению объектов в видимую часть рабочего пространства.

Не путать с подменой, чтобы разъединенные соединения не выглядели соединенными.