blockly > Ereignisse

Namespace „Ereignisse“

Klassen

Klasse Beschreibung
BlockBase Abstrakte Klasse für alle Blockereignisse.
BlockChange Benachrichtigt Listener, wenn sich ein Element eines Blocks geändert hat (z. B. Feldwerte, Kommentare usw.).
BlockCreate Benachrichtigt Listener, wenn ein Block (oder ein verbundener Stapel von Blöcken) erstellt wird.
BlockDelete Benachrichtigt Listener, wenn ein Block (oder ein verbundener Blockstapel) gelöscht wird.
BlockDrag Benachrichtigt Listener, wenn ein Block manuell verschoben wird.
BlockFieldIntermediateChange Benachrichtigt Listener, wenn sich der Wert des Felds eines Blocks geändert hat, die Änderung aber noch nicht abgeschlossen ist und voraussichtlich ein Blockänderungsereignis folgt.
BlockMove Benachrichtigt Listener, wenn ein Block verschoben wird. Das kann von einer Verbindung zu einer anderen oder von einem Ort im Arbeitsbereich zu einem anderen sein.
BubbleOpen Klasse für ein Ereignis, bei dem eine Bubble geöffnet wird.
Klick Benachrichtigt die Zuhörer, dass ein Blockly-Element angeklickt wurde.
CommentBase Abstrakte Klasse für ein Kommentarereignis.
CommentChange Hörer werden darüber informiert, dass sich der Inhalt eines Arbeitsbereichskommentars geändert hat.
CommentCollapse
CommentCreate Benachrichtigt die Abonnenten, dass ein Arbeitsbereichskommentar erstellt wurde.
CommentDelete Benachrichtigt die Zuhörer, dass ein Kommentar in einem Arbeitsbereich gelöscht wurde.
CommentDrag Hörer werden benachrichtigt, wenn ein Kommentar manuell per Drag-and-drop verschoben wird.
CommentMove Benachrichtigt die Zuhörer, dass ein Arbeitsbereichskommentar verschoben wurde.
CommentResize Benachrichtigt die Abonnenten, dass die Größe eines Arbeitsbereichskommentars geändert wurde.
FinishedLoading Benachrichtigt Listener, wenn die Deserialisierung des Arbeitsbereichs aus JSON/XML abgeschlossen ist.
Ausgewählt Klasse für ein ausgewähltes Ereignis. Benachrichtigt die Zuhörer, dass ein neues Element ausgewählt wurde.
ThemeChange Benachrichtigt die Zuhörer, dass sich das Design des Arbeitsbereichs geändert hat.
ToolboxItemSelect Benachrichtigt die Listener, dass ein Tool-Box-Element ausgewählt wurde.
TrashcanOpen Benachrichtigt die Zuhörer, wenn der Mülleimer geöffnet oder geschlossen wird.
UiBase Basisklasse für ein UI-Ereignis. UI-Ereignisse sind Ereignisse, die nicht über das Netzwerk gesendet werden müssen, damit die Bearbeitung durch mehrere Nutzer funktioniert (z.B. Scrollen im Arbeitsbereich, Zoomen, Öffnen von Toolbox-Kategorien). UI-Ereignisse können nicht rückgängig gemacht oder wiederholt werden.
VarBase Abstrakte Klasse für ein variables Ereignis.
VarCreate Benachrichtigt die Listener, dass ein variables Modell erstellt wurde.
VarDelete Informiert die Abonnenten darüber, dass ein Variablenmodell gelöscht wurde.
VarRename Benachrichtigt Listener darüber, dass ein Variablenmodell umbenannt wurde.
VarTypeChange Benachrichtigt Listener darüber, dass sich der Typ einer Variablen geändert hat.
ViewportChange

Benachrichtigt die Listener, dass sich die Position oder der Maßstab der Arbeitsfläche geändert hat.

Es werden keine Benachrichtigungen gesendet, wenn sich die Größe des Arbeitsbereichs selbst ändert.

Abstrakte Klassen

Abstrakte Klasse Beschreibung
Zusammenfassung Abstrakte Klasse für ein Ereignis.

Aufzählungen

Aufzählung Beschreibung
BubbleType
ClickTarget

Funktionen

Funktion Beschreibung
clearPendingUndo() Ändern Sie ausstehende Rückgängig-Ereignisse so, dass sie beim Auslösen nicht in den Rückgängig-Stapel gelangen. Wird von Workspace.clearUndo aufgerufen.
disable() Senden Sie keine Ereignisse mehr. Jeder Aufruf dieser Funktion MUSS auch enable aufrufen.
disableOrphans(event) Gibt an, ob ein Block deaktiviert ist, je nachdem, ob er richtig angeschlossen ist. Verwenden Sie diese Option für Anwendungen, bei denen alle Blöcke mit einem übergeordneten Block verbunden sein sollen.
enable() Senden Sie Ereignisse. Sofern Ereignisse nicht bereits deaktiviert waren, als der entsprechende Deaktivierungsaufruf erfolgt ist.
filter(queue)

Filtere die Ereignisse in der Warteschlange, indem du Duplikate zusammenführst, Nullereignisse entfernst und BlockChange-Ereignisse neu aufnimmst.

Bisherige Versionen dieser Funktion:

Diese Funktion wurde ursprünglich im Commit cf257ea5 hinzugefügt, um die Gesamtzahl der gesendeten Ereignisse drastisch zu reduzieren. Ursprünglich betraf es nur BlockMove-Ereignisse, aber im Laufe der Zeit wurden weitere hinzugefügt.

Es wurde Code hinzugefügt, um BlockChange-Ereignisse neu anzuordnen, die im Commit 5578458 hinzugefügt wurden. Der Grund dafür ist unklar, aber höchstwahrscheinlich war es Teil eines nur teilweise erfolgreichen Versuchs, Probleme mit der Ereignisreihenfolge bei Blockmutationen zu beheben. Dieser Code sollte wahrscheinlich oben in der Funktion vor dem Zusammenführen und Entfernen von Nullen hinzugefügt werden, wurde aber aus derzeit vergessenen Gründen unten hinzugefügt. In diesen Fehleruntersuchungen finden Sie eine ausführlichere Erläuterung des zugrunde liegenden Problems und einiger Fehler, die aufgrund dieser unvollständigen/falschen Fehlerbehebung aufgetreten sind:

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

Später, in PR #1205, wurde die ursprüngliche O(n²)-Implementierung durch eine lineare Implementierung ersetzt. Es wurden jedoch noch weitere Fehlerkorrekturen vorgenommen.

Im August 2024 wurden einige wichtige Vereinfachungen vorgenommen:

Diese Funktion wurde zuvor von Workspace.prototype.undo aufgerufen, aber die Mutation von Ereignissen durch diese Funktion war die Ursache für Problem 7026. Beachten Sie, dass Ereignisse in umgekehrter Reihenfolge anders kombiniert werden als in vorwärtsgerichteter Reihenfolge. Die ursprünglich gewählte Lösung bestand darin, in PR #7069 Code für fireNow hinzuzufügen, um .undoStack_ und .redoStack_ aller Workspaces nach dem Senden von Ereignissen zu filtern. Dadurch wurde das Problem zwar anscheinend behoben, aber die Lösung war deutlich komplexer und es war schwieriger zu verstehen, wie Ereignisse für Undo/Redo verarbeitet werden. Daher wurden sowohl der Aufruf von Undo als auch der Code für die Nachbearbeitung entfernt. „forward=true“ wurde als Standard festgelegt und der Aufruf der Funktion mit „forward=false“ wurde eingestellt.

Gleichzeitig wurde der fehlerhafte Code zum Neuanordnen von BlockChange-Ereignissen durch eine weniger fehlerhafte Version derselben Funktion in einer neuen Funktion namens enqueueEvent ersetzt, die von fireInternal aufgerufen wird. So wird sichergestellt, dass Ereignisse zum Zeitpunkt des Aufrufs des Filters in der richtigen Reihenfolge sind.

Außerdem wurde der Code zum Zusammenführen von Ereignissen so geändert, dass nur unmittelbar benachbarte Ereignisse zusammengeführt werden. Dadurch wurde die Implementierung vereinfacht und gleichzeitig dafür gesorgt, dass die Ereignisse durch das Zusammenführen nicht neu angeordnet werden.

fire(event)

Ein Ereignis in die Warteschlange einfügen, das an Änderungs-Listener gesendet werden soll.

Hinweise:

– Ereignisse werden bis zu einer Zeitüberschreitung in die Warteschlange gestellt, in der Regel nach Abschluss des Renderings oder am Ende des aktuellen Mikrotasks, wenn die Ausführung nicht in einem Browser erfolgt. – In der Warteschlange befindliche Ereignisse können durch Kombination mit später hinzugefügten Ereignissen beschädigt werden, aber nur bis sie ausgelöst werden. – Ereignisse werden über die Methode „fireChangeListener“ im betroffenen Arbeitsbereich gesendet.

fromJson(json, workspace) Dekodieren Sie die JSON-Datei in ein Ereignis.
get(eventType) Ruft die Klasse für einen bestimmten Ereignistyp aus der Registry ab.
getGroup() Aktuelle Gruppe.
getRecordUndo() Gibt an, ob Ereignisse dem Rückgängig-Stapel hinzugefügt werden.
isEnabled() Gibt an, ob Ereignisse ausgelöst werden können oder nicht.
setGroup(state) Eine Gruppe starten oder beenden.
setRecordUndo(newValue) Hiermit wird festgelegt, ob Ereignisse dem Rückgängig-Stapel hinzugefügt werden sollen.

Schnittstellen

Schnittstelle Beschreibung
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

Variablen

Variable Beschreibung
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

Liste der Ereignisse, die dazu führen, dass Objekte wieder in den sichtbaren Bereich des Arbeitsbereichs geschoben werden.

Nicht zu verwechseln mit dem Auffüllen, damit getrennte Verbindungen nicht als verbunden angezeigt werden.

ÄNDERN
KLICKEN
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
ERSTELLEN
LÖSCHEN
FINISHED_LOADING
MOVE
AUSGEWÄHLT
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
Benutzeroberfläche
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

Typaliasse

Typalias Beschreibung
BumpEvent

Art von Ereignissen, die dazu führen, dass Objekte wieder in den sichtbaren Bereich des Arbeitsbereichs geschoben werden.

Nicht zu verwechseln mit dem Auffüllen, damit getrennte Verbindungen nicht als verbunden angezeigt werden.