Każda zmiana w obszarze roboczym wywołuje zdarzenie. Zdarzenia te w pełni opisują stan przed i po każdej zmianie.
Odsłuchiwanie zdarzeń
Obszary robocze mają metody addChangeListener
i removeChangeListener
, których można używać do nasłuchiwania strumienia zdarzeń. Jednym z przykładów jest generowanie kodu w czasie rzeczywistym.
Innym przykładem jest prezentacja maksymalnego limitu blokad.
Jak często zdarza się, że w żadnym z tych 2 przykładów nie ma znaczenia, jakie było zdarzenie wyzwalające. Mogą po prostu sprawdzić bieżący stan obszaru roboczego.
Bardziej zaawansowany detektor zdarzeń analizuje zdarzenie aktywujące. W poniższym przykładzie widać, że użytkownik tworzy swój pierwszy komentarz, wysyła alert, a następnie przestaje nasłuchiwać, aby nie były wywoływane kolejne alerty.
function onFirstComment(event) {
if (event.type == Blockly.Events.BLOCK_CHANGE &&
event.element == 'comment' &&
!event.oldValue && event.newValue) {
alert('Congratulations on creating your first comment!')
workspace.removeChangeListener(onFirstComment);
}
}
workspace.addChangeListener(onFirstComment);
Aby nasłuchiwać zdarzeń występujących wewnątrz wysuwanego panelu, można dodać do jego obszaru roboczego.
var flyoutWorkspace = yourWorkspace.getFlyout().getWorkspace();
flyoutWorkspace.addChangeListener(onFirstComment);
Blokady pozwalają na odsłuchiwanie strumienia zdarzeń w inny sposób. Blok może zdefiniować funkcję onchange
lub użyć setOnChange, aby ustawić funkcję, która będzie wywoływana po każdym wystąpieniu zmiany w obszarze roboczym bloku.
Typy zdarzeń
Informacje o poszczególnych zdarzeniach znajdziesz w dokumentacji referencyjnej.
Demonstracyjny
Przykładowe przydatne funkcje wydarzeń znajdziesz w prezentacji funkcji lustrzanej. Ta wersja demonstracyjna zawiera 2 obszary robocze Blockly, które są synchronizowane za pomocą zdarzeń.