blockly > Zdarzenia

Przestrzeń nazw Events

Zajęcia

Klasa Opis
BlockBase Abstrakcyjna klasa dla każdego zdarzenia związanego z blokami.
BlockChange Informuje słuchaczy o zmianie elementów bloku (np.wartości pól, komentarzy itp.).
BlockCreate Informuje słuchaczy, gdy zostanie utworzony blok (lub połączony zestaw bloków).
BlockDelete powiadamia słuchaczy, gdy blok (lub połączony zestaw bloków) zostanie usunięty;
BlockDrag Informuje obiekty nasłuchujące, gdy blok jest przeciągany lub upuszczany ręcznie.
BlockFieldIntermediateChange Informuje subskrybentów, gdy zmieni się wartość pola bloku, ale zmiana nie została jeszcze zakończona. Następnie powinien nastąpić kolejny blok zdarzeń zmiany bloku.
BlockMove Informuje słuchaczy o przesunięciu bloku. Może to być przejście z jednego połączenia na inne lub z jednej lokalizacji w obszarze roboczym do innej.
BubbleOpen Klasa zdarzenia otwarcia okienka.
Kliknij Informuje słuchaczy, że kliknięto jakiś element blokady.
CommentBase Abstrakcyjna klasa dla zdarzenia komentarza.
CommentChange Informuje słuchaczy, że treść komentarza w obszarze roboczym uległa zmianie.
CommentCollapse
CommentCreate Informuje słuchaczy, że komentarz do obszaru roboczego został utworzony.
CommentDelete Informuje słuchaczy, że komentarz w obszarze roboczym został usunięty.
CommentDrag Informuje słuchaczy, gdy komentarz jest przeciągany lub przenoszony ręcznie.
CommentMove Informuje słuchaczy, że komentarz w obszarze roboczym został przeniesiony.
CommentResize Informuje słuchaczy, że rozmiar komentarza w obszarze roboczym został zmieniony.
FinishedLoading Powiadomienia odbiorców, gdy workspace zakończy deserializację z JSON/XML.
Wybrane Klasa dla wybranego zdarzenia. Informuje słuchaczy o wybraniu nowego elementu.
ThemeChange Informuje słuchaczy o zmianie motywu obszaru roboczego.
ToolboxItemSelect Informuje słuchaczy, że wybrano element narzędzi.
TrashcanOpen powiadamia słuchaczy, gdy kosz jest otwierany lub zamykany;
UiBase Klasa podstawowa zdarzenia interfejsu użytkownika. Zdarzenia interfejsu to zdarzenia, które nie muszą być wysyłane przez sieć, aby umożliwić edycję przez wielu użytkowników (np. przewijanie obszaru roboczego, powiększanie, otwieranie kategorii w skrzynce narzędzi). Zdarzenia interfejsu użytkownika nie można cofnąć ani powtórzyć.
VarBase Klasa abstrakcyjna dla zmiennego zdarzenia.
VarCreate Informuje słuchaczy, że został utworzony model zmienny.
VarDelete Informuje słuchaczy, że model zmiennej został usunięty.
VarRename Informuje słuchaczy, że nazwa modelu zmiennej została zmieniona.
VarTypeChange Informuje słuchaczy o zmianie typu zmiennej.
ViewportChange

Informuje słuchaczy, że zmieniła się pozycja lub skala powierzchni roboczej.

Nie wysyła powiadomienia, gdy zmienia się rozmiar obszaru roboczego.

Abstrakcyjne zajęcia

Abstrakcyjna klasa Opis
Streszczenie Abstrakcyjna klasa zdarzenia.

Wyliczenia

Wyliczenie Opis
BubbleType
ClickTarget

Funkcje

Funkcja Opis
clearPendingUndo() Modyfikowanie oczekujących zdarzeń anulowania, aby po ich wywołaniu nie trafiały na stos anulowania. Wykonywane przez Workspace.clearUndo.
disable() Przestań wysyłać zdarzenia. Każde wywołanie tej funkcji MUSI wywoływać funkcję enable.
disableOrphans(event) Ustaw, czy blokada jest wyłączona w zależności od tego, czy jest prawidłowo podłączona. Używaj tego w przypadku aplikacji, w których wszystkie bloki powinny być połączone z blokiem nadrzędnym.
enable() Rozpocznij wysyłanie zdarzeń. Zdarzenia nie są wyłączane, jeśli w momencie wywołania odpowiedniej metody wyłączenia były już wyłączone.
filter(queue)

Filtruj zdarzenia w kolejce, zlewając zduplikowane, usuwając puste i ponownie rejestrując zdarzenia BlockChange.

Historia tej funkcji:

Ta funkcja została pierwotnie dodana w commitcie cf257ea5 w celu znacznego zmniejszenia łącznej liczby wysyłanych zdarzeń. Początkowo dotyczyło to tylko zdarzeń BlockMove, ale z czasem dodano inne zdarzenia.

Dodano kod, który w nieznanych okolicznościach, ale prawdopodobnie w ramach tylko częściowo udanego próby rozwiązania problemów z kolejnością zdarzeń podczas mutacji bloków, zmienia kolejność zdarzeń BlockChange dodanych w commit 5578458. Ten kod powinien zostać dodany na początku funkcji, przed scalaniem i usunięciem wartości null, ale z nieznanych obecnie powodów został dodany na końcu. Aby dowiedzieć się więcej o podstawowym problemie i niektórych niepowodzeniach spowodowanych niepełną lub nieprawidłową poprawką, zapoznaj się z tymi raportami o błędach:

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

Później w poprawce #1205 pierwotną implementację O(n^2) zastąpiono implementacją o czasie liniowym, ale później wprowadzono dodatkowe poprawki.

W sierpniu 2024 r. wprowadziliśmy kilka istotnych uproszczeń:

Ta funkcja była wcześniej wywoływana z poziomu Workspace.prototype.undo, ale mutacja zdarzeń przez tę funkcję była przyczyną problemu #7026 (zauważ, że zdarzenia łączyłyby się inaczej w odwrotnej kolejności niż w prostej). Pierwotnie wybranym rozwiązaniem było dodanie (w PR #7069) kodu do wywołania fireNow, aby przefiltrować .undoStack_ i .redoStack_ dowolnej przestrzeni roboczej, która była właśnie zaangażowana w przesyłanie zdarzeń. Rozwiązanie to rozwiązało problem, ale znacznie zwiększyło złożoność i utrudniło analizę sposobu przetwarzania zdarzeń w celu cofnięcia lub powtórzenia. Dlatego usunięto wywołanie z undo oraz kod do dalszego przetwarzania, a wywołanie funkcji z forward=false zostało wycofane.

Jednocześnie kod z błędami służący do zmiany kolejności zdarzeń BlockChange został zastąpiony mniej zawodną wersją tej samej funkcji w nowej funkcji enqueueEvent, wywoływanej z poziomu fireInternal, co zapewnia, że zdarzenia będą w prawidłowej kolejności w momencie wywołania filtra.

Ponadto kod scalania zdarzeń został zmodyfikowany, aby scalić tylko bezpośrednio sąsiadujące zdarzenia. Dzięki temu uprościliśmy implementację, a jednocześnie zapewniliśmy, że zlanie zdarzeń nie spowoduje zmiany ich kolejności.

fire(event)

umieszcza w kole zdarzenie do przesłania odbiornikom zmian;

Uwagi:

– zdarzenia są umieszczane w kole do czasu przekroczenia limitu czasu, zwykle po zakończeniu renderowania lub po zakończeniu bieżącego mikrozadania, jeśli nie są wykonywane w przeglądarce. – Zdarzenia w kole oczekujących mogą ulec zmianie, ponieważ są łączone z później dodanymi zdarzeniami, ale tylko do momentu ich wywołania. – Zdarzenia są wysyłane za pomocą metody fireChangeListener w dotyczącym obszarze roboczym.

fromJson(json, workspace) Dekoduj dane JSON na zdarzenie.
get(eventType) Pobiera z rejestru klasę dla określonego typu zdarzenia.
getGroup() bieżąca grupa;
getRecordUndo() Zwraca informację, czy zdarzenia mają być dodawane do stosu cofnięcia.
isEnabled() Zwraca, czy zdarzenia mogą być wywoływane.
setGroup(state) Rozpocznij lub zatrzymaj grupę.
setRecordUndo(newValue) Określa, czy zdarzenia mają być dodawane do stosu cofnięcia.

Interfejsy

Interfejs Opis
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

Zmienne

Zmienna Opis
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

Lista zdarzeń, które powodują, że obiekty są przesuwane z powrotem do widocznej części obszaru roboczego.

Nie należy mylić tego z przesuwaniem, aby odłączone połączenia nie były widoczne jako połączone.

ZMIANA
KLIKNIJ
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
UTWÓRZ
USUŃ
FINISHED_LOADING
MOVE
WYBRANE
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
UI
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

Aliasy typu

Typ aliasu Opis
BumpEvent

Typ zdarzeń, które powodują, że obiekty są przesuwane z powrotem do widocznej części workspace.

Nie należy mylić tego z przesuwaniem, aby odłączone połączenia nie były widoczne jako połączone.