blockly > Événements

Espace de noms des événements

Classes

Classe Description
BlockBase Classe abstraite pour tout événement lié aux blocs.
BlockChange Informe les écouteurs lorsqu'un élément d'un bloc a changé (par exemple, les valeurs des champs, les commentaires, etc.).
BlockCreate Notifie les écouteurs lorsqu'un bloc (ou une pile de blocs connectés) est créé.
BlockDelete Informe les écouteurs lorsqu'un bloc (ou une pile de blocs connectés) est supprimé.
BlockDrag Informe les écouteurs lorsqu'un bloc est déplacé manuellement.
BlockFieldIntermediateChange Informe les écouteurs lorsque la valeur du champ d'un bloc a changé, mais que le changement n'est pas encore terminé et devrait être suivi d'un événement de modification de bloc.
BlockMove Notifie les écouteurs lorsqu'un bloc est déplacé. Il peut s'agir d'une connexion à une autre ou d'un emplacement à un autre dans l'espace de travail.
BubbleOpen Classe pour un événement d'ouverture de bulle.
Cliquez sur Informe les écouteurs qu'un élément Blockly a enregistré un clic.
CommentBase Classe abstraite pour un événement de commentaire.
CommentChange Informe les écouteurs que le contenu d'un commentaire dans un espace de travail a changé.
CommentCollapse
CommentCreate Informe les auditeurs qu'un commentaire a été créé dans un espace de travail.
CommentDelete Informe les auditeurs qu'un commentaire d'espace de travail a été supprimé.
CommentDrag Notifie les auditeurs lorsqu'un commentaire est déplacé manuellement.
CommentMove Informe les auditeurs qu'un commentaire d'espace de travail a été déplacé.
CommentResize Informe les auditeurs qu'un commentaire d'espace de travail a été redimensionné.
FinishedLoading Informe les écouteurs lorsque la désérialisation de l'espace de travail à partir de JSON/XML est terminée.
sélectionné(s) Classe d'un événement sélectionné. Informe les écouteurs qu'un nouvel élément a été sélectionné.
ThemeChange Informe les auditeurs que le thème de l'espace de travail a changé.
ToolboxItemSelect Informe les écouteurs qu'un élément de la boîte à outils a été sélectionné.
TrashcanOpen Informe les écouteurs lorsque la poubelle s'ouvre ou se ferme.
UiBase Classe de base pour un événement d'interface utilisateur. Les événements d'interface utilisateur sont des événements qui n'ont pas besoin d'être envoyés par ligne pour que la modification multi-utilisateur fonctionne (par exemple, faire défiler l'espace de travail, faire un zoom, ouvrir des catégories de boîte à outils). Les événements d'interface utilisateur ne permettent pas d'annuler ni de rétablir des actions.
VarBase Classe abstraite pour un événement variable.
VarCreate Informe les écouteurs qu'un modèle de variable a été créé.
VarDelete Informe les écouteurs qu'un modèle de variable a été supprimé.
VarRename Informe les écouteurs qu'un modèle de variable a été renommé.
VarTypeChange Informe les écouteurs que le type d'une variable a changé.
ViewportChange

Informe les écouteurs que la position ou l'échelle de la surface de l'espace de travail a changé.

Ne génère pas de notification lorsque l'espace de travail lui-même est redimensionné.

Classes abstraites

Classe abstraite Description
Résumé Classe abstraite pour un événement.

Énumérations

Enumeration Description
BubbleType
ClickTarget

Fonctions

Fonction Description
clearPendingUndo() Modifiez les événements d'annulation en attente afin qu'ils ne se retrouvent pas dans la pile d'annulation lorsqu'ils sont déclenchés. Appelé par Workspace.clearUndo.
disable() Arrêtez d'envoyer des événements. Chaque appel de cette fonction DOIT également appeler enable.
disableOrphans(event) Indique si un bloc est désactivé en fonction de son bon fonctionnement. Utilisez-le pour les applications dans lesquelles tous les blocs doivent être connectés à un bloc supérieur.
enable() Commencez à envoyer des événements. Sauf si les événements étaient déjà désactivés lorsque l'appel de désactivation correspondant a été effectué.
filter(queue)

Filtrez les événements mis en file d'attente en fusionnant les doublons, en supprimant les événements nuls et en réorganisant les événements BlockChange.

Historique de cette fonction:

Cette fonction a été ajoutée à l'origine dans le commit cf257ea5 dans le but de réduire considérablement le nombre total d'événements distribués. Au départ, elle ne concernait que les événements BlockMove, mais d'autres ont été ajoutés au fil du temps.

Du code a été ajouté pour réorganiser les événements BlockChange ajoutés dans le commit 5578458, pour des raisons incertaines, mais probablement dans le cadre d'une tentative partiellement réussie de résoudre les problèmes d'ordre des événements lors des mutations de blocs. Ce code aurait probablement dû être ajouté en haut de la fonction, avant la fusion et la suppression des valeurs nulles, mais il a été ajouté en bas pour des raisons oubliées. Consultez ces investigations de bugs pour en savoir plus sur le problème sous-jacent et sur certains des échecs dus à cette correction incomplète/incorrecte:

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

Plus tard, dans la demande de pull 1205, l'implémentation d'origine O(n²) a été remplacée par une implémentation en temps linéaire, bien que des corrections supplémentaires aient été apportées par la suite.

En août 2024, plusieurs simplifications importantes ont été apportées:

Cette fonction était auparavant appelée à partir de Workspace.prototype.undo, mais la mutation des événements par cette fonction était à l'origine du problème 7026 (notez que les événements se combinaient différemment dans l'ordre inverse que dans l'ordre direct). La solution initialement choisie pour résoudre ce problème consistait à ajouter (dans la demande de publication 7069) du code à fireNow pour post-filtrer les .undoStack_ et .redoStack_ de tout espace de travail qui venait d'être impliqué dans l'envoi d'événements. Cela a apparemment résolu le problème, mais a ajouté une complexité supplémentaire considérable et a rendu difficile de comprendre comment les événements sont traités pour l'annulation/la restauration. Par conséquent, l'appel de l'annulation et le code de post-traitement ont été supprimés, et forward=true a été défini par défaut, tandis que l'appel de la fonction avec forward=false a été abandonné.

En même temps, le code buggé permettant de réorganiser les événements BlockChange a été remplacé par une version moins buguée de la même fonctionnalité dans une nouvelle fonction, enqueueEvent, appelée à partir de fireInternal. Cela garantit que les événements seront dans le bon ordre au moment de l'appel du filtre.

De plus, le code de fusion des événements a été modifié afin que seuls les événements immédiatement adjacents soient fusionnés. Cela a simplifié l'implémentation tout en veillant à ce que la fusion d'événements ne puisse pas les réorganiser.

fire(event)

Mettre en file d'attente un événement à distribuer aux écouteurs de modification.

Remarques :

- Les événements sont mis en file d'attente jusqu'à l'expiration du délai, généralement après le rendu ou à la fin de la microtâche en cours, s'ils ne s'exécutent pas dans un navigateur. - Les événements mis en file d'attente sont sujets à des modifications destructrices en étant combinés à des événements mis en file d'attente ultérieurement, mais uniquement jusqu'à ce qu'ils soient déclenchés. - Les événements sont distribués via la méthode fireChangeListener dans l'espace de travail concerné.

fromJson(json, workspace) Décodez le fichier JSON en événement.
get(eventType) Récupère la classe d'un type d'événement spécifique à partir du Registre.
getGroup() Groupe actuel.
getRecordUndo() Indique si des événements doivent être ajoutés à la pile "Annuler".
isEnabled() Indique si des événements peuvent être déclenchés ou non.
setGroup(state) Démarrer ou arrêter un groupe
setRecordUndo(newValue) Indique si les événements doivent être ajoutés à la pile d'annulation.

Interfaces

Interface Description
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 Description
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

Liste des événements qui entraînent le renvoi d'objets dans la partie visible de l'espace de travail.

Ne pas confondre avec le forçage pour que les connexions déconnectées ne semblent pas connectées.

MODIFIER
CLIQUER
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
CRÉER
SUPPRIMER
FINISHED_LOADING
MOVE
SÉLECTIONNÉ
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
UI
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

Alias de type

Alias de type Description
BumpEvent

Type d'événements qui entraînent le renvoi d'objets dans la partie visible de l'espace de travail.

Ne pas confondre avec le forçage pour que les connexions déconnectées ne semblent pas connectées.