blockly > Eventos

Espacio de nombres de eventos

Clases

Clase Descripción
BlockBase Clase abstracta para cualquier evento relacionado con los bloques.
BlockChange Notifica a los objetos de escucha cuando cambia algún elemento de un bloque (p.ej., valores de campos, comentarios, etcétera).
BlockCreate Notifica a los objetos de escucha cuando se crea un bloque (o una pila conectada de bloques).
BlockDelete Notifica a los objetos de escucha cuando se borra un bloque (o una pila de bloques conectados).
BlockDrag Notifica a los objetos de escucha cuando se arrastra o suelta un bloque de forma manual.
BlockFieldIntermediateChange Notifica a los objetos de escucha cuando cambia el valor del campo de un bloque, pero el cambio aún no se completa y se espera que le siga un evento de cambio de bloque.
BlockMove Notifica a los objetos de escucha cuando se mueve un bloque. Esto puede ser de una conexión a otra, o de una ubicación del lugar de trabajo a otra.
BubbleOpen Es la clase de un evento de apertura de burbuja.
Clic Notifica a los objetos de escucha que se hizo clic en algún elemento de Blockly.
CommentBase Clase abstracta para un evento de comentario.
CommentChange Notifica a los objetos de escucha que cambió el contenido de un comentario de Workspace.
CommentCollapse
CommentCreate Notifica a los objetos de escucha que se creó un comentario en el lugar de trabajo.
CommentDelete Notifica a los objetos de escucha que se borró un comentario de Workspace.
CommentDrag Notifica a los objetos de escucha cuando se arrastra o suelta un comentario de forma manual.
CommentMove Notifica a los objetos de escucha que se movió un comentario de Workspace.
CommentResize Notifica a los objetos de escucha que se cambió el tamaño de un comentario de un lugar de trabajo.
FinishedLoading Notifica a los objetos de escucha cuando el espacio de trabajo termina de deserializarse desde JSON/XML.
Seleccionado Es la clase de un evento seleccionado. Notifica a los objetos de escucha que se seleccionó un elemento nuevo.
ThemeChange Notifica a los objetos de escucha que cambió el tema del lugar de trabajo.
ToolboxItemSelect Notifica a los objetos de escucha que se seleccionó un elemento de la caja de herramientas.
TrashcanOpen Notifica a los objetos de escucha cuando se abre o se cierra el cubo de basura.
UiBase Clase base para un evento de IU. Los eventos de la IU son eventos que no necesitan enviarse por cable para que funcione la edición multiusuario (p.ej., desplazarse por el espacio de trabajo, acercar y alejar, abrir categorías de la caja de herramientas). Los eventos de la IU no se deshacen ni se vuelven a hacer.
VarBase Es una clase abstracta para un evento variable.
VarCreate Notifica a los objetos de escucha que se creó un modelo de variables.
VarDelete Notifica a los objetos de escucha que se borró un modelo de variable.
VarRename Notifica a los objetos de escucha que se cambió el nombre de un modelo de variable.
VarTypeChange Notifica a los objetos de escucha que cambió el tipo de una variable.
ViewportChange

Notifica a los objetos de escucha que cambió la posición o la escala de la superficie del espacio de trabajo.

No notifica cuando el espacio de trabajo cambia de tamaño.

Clases abstractas

Clase abstracta Descripción
Resumen Es una clase abstracta para un evento.

Enumeraciones

Enumeration Descripción
BubbleType
ClickTarget

Funciones

Función Descripción
clearPendingUndo() Modifica los eventos de deshacer pendientes para que, cuando se activen, no se envíen a la pila de deshacer. Llamado por Workspace.clearUndo.
disable() Detener el envío de eventos Cada llamada a esta función TAMBIÉN DEBE llamar a enable.
disableOrphans(event) Establece si un bloque está inhabilitado según si está conectado correctamente. Úsalo en aplicaciones en las que todos los bloques deben estar conectados a un bloque superior.
enable() Comienza a enviar eventos. A menos que los eventos ya estén inhabilitados cuando se realizó la llamada correspondiente para inhabilitarlos.
filter(queue)

Filtra los eventos en cola combinando los duplicados, quitando los eventos nulos y volviendo a grabar los eventos de BlockChange.

Historial de esta función:

Esta función se agregó originalmente en la confirmación cf257ea5 con la intención de reducir de forma significativa la cantidad total de eventos despachados. En un principio, solo afectaba a los eventos de BlockMove, pero con el tiempo se agregaron otros.

Se agregó código para reordenar los eventos de BlockChange agregados en la confirmación 5578458, por razones inciertas, pero lo más probable es que sea parte de un intento solo parcialmente exitoso de solucionar problemas con el orden de eventos durante las mutaciones de bloques. Es probable que este código se deba agregar a la parte superior de la función, antes de la combinación y la eliminación de nulos, pero se agregó en la parte inferior por razones que ahora se olvidaron. Consulta estas investigaciones de errores para obtener un análisis más completo del problema subyacente y algunas de las fallas que surgieron debido a esta corrección incompleta o incorrecta:

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

Más adelante, en la PR #1205, la implementación original de O(n^2) se reemplazó por una implementación de tiempo lineal, aunque se realizaron correcciones adicionales posteriormente.

En agosto de 2024, se realizaron varias simplificaciones importantes:

Anteriormente, se llamaba a esta función desde Workspace.prototype.undo, pero la mutación de eventos por parte de esta función fue la causa del problema #7026 (ten en cuenta que los eventos se combinarían de forma diferente en orden inverso en comparación con el orden directo). La solución que se eligió originalmente para esto fue la adición (en la PR #7069) de código a fireNow para filtrar después .undoStack_ y .redoStack_ de cualquier espacio de trabajo que acabara de participar en el envío de eventos. Al parecer, esto resolvió el problema, pero agregó una complejidad adicional considerable y dificultó el razonamiento sobre cómo se procesan los eventos para deshacer o rehacer, por lo que se quitaron la llamada de deshacer y el código de procesamiento posterior, y forward=true se convirtió en el valor predeterminado, mientras que llamar a la función con forward=false dejó de estar disponible.

Al mismo tiempo, el código con errores para reordenar los eventos de BlockChange se reemplazó por una versión menos defectuosa de la misma funcionalidad en una función nueva, enqueueEvent, a la que se llama desde fireInternal, lo que garantiza que los eventos estén en el orden correcto en el momento en que se llame al filtro.

Además, se modificó el código de combinación de eventos para que solo se combinen los eventos inmediatamente adyacentes. Esto simplificó la implementación y, al mismo tiempo, garantizó que la combinación de eventos no pueda hacer que se reordenen.

fire(event)

Encola un evento para que se envíe a los objetos de escucha de cambios.

Notas:

- Los eventos se ponen en cola hasta que se produce un tiempo de espera, por lo general, después de que se completa la renderización o al final de la microtarea actual, si no se ejecutan en un navegador. - Los eventos en fila están sujetos a modificaciones destructivas, ya que se combinan con eventos que se ponen en fila más adelante, pero solo hasta que se activan. - Los eventos se despachan a través del método fireChangeListener en el espacio de trabajo afectado.

fromJson(json, workspace) Decodifica el JSON en un evento.
get(eventType) Obtiene la clase de un tipo de evento específico del registro.
getGroup() Grupo actual.
getRecordUndo() Muestra si se agregarán eventos a la pila de deshacer.
isEnabled() Muestra si se pueden activar eventos o no.
setGroup(state) Iniciar o detener un grupo
setRecordUndo(newValue) Establece si se deben agregar eventos a la pila de deshacer.

Interfaces

Interfaz Descripción
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
BlockDeleteJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
ClickJson
CommentBaseJson
CommentChangeJson
CommentCollapseJson
CommentCreateJson
CommentDragJson
CommentMoveJson
CommentResizeJson
SelectedJson
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

Variables

Variable Descripción
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

Es una lista de eventos que hacen que los objetos vuelvan a la parte visible del espacio de trabajo.

No debe confundirse con el bumping para que las conexiones desconectadas no aparezcan conectadas.

CAMBIAR
CLIC
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
CREATE
BORRAR
FINISHED_LOADING
MOVE
SELECTED
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
IU
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

Alias de tipo

Alias de tipo Descripción
BumpEvent

Es el tipo de eventos que hacen que los objetos vuelvan a la parte visible del espacio de trabajo.

No debe confundirse con el bumping para que las conexiones desconectadas no aparezcan conectadas.