Jede Änderung im Arbeitsbereich löst ein Ereignis aus. Diese Ereignisse beschreiben den Zustand vor und nach jeder Änderung vollständig.
Ereignisse beobachten
Workspaces haben die Methoden addChangeListener
und removeChangeListener
, mit denen der Ereignisstream abgehört werden kann. Ein Beispiel ist die Echtzeitgenerierung von Code.
Ein weiteres Beispiel ist die
Demo zu maximalen Blockierungen
Wie oft der Fall ist, ist keines dieser beiden Beispiele wichtig, was die auslösenden
Ereignis war. Sie sehen sich einfach den aktuellen Status des Arbeitsbereichs an.
Ein komplexerer Event-Listener würde sich das auslösende Ereignis ansehen. Im folgenden Beispiel wird erkannt, wenn der Nutzer seinen ersten Kommentar erstellt, eine Benachrichtigung ausgegeben und dann das Zuhören beendet, damit keine weiteren Benachrichtigungen ausgelöst werden.
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);
Um auf Ereignisse zu warten, die innerhalb eines Flyouts eintreten, kann ein Listener zum Arbeitsbereich des Flyouts hinzugefügt werden.
var flyoutWorkspace = yourWorkspace.getFlyout().getWorkspace();
flyoutWorkspace.addChangeListener(onFirstComment);
Blöcke haben eine andere Methode, den Ereignisstream zu überwachen. Für einen Block kann eine onchange
-Funktion definiert werden oder mit setOnChange eine Funktion festgelegt werden, die aufgerufen wird, wenn sich im Arbeitsbereich des Blocks etwas ändert.
Ereignistypen
Informationen zu einzelnen Ereignissen finden Sie in der Referenzdokumentation.
Demo
Ein Beispiel für die coolen Dinge, die man mit Veranstaltungen machen kann, findest du hier: die Mirror Demo. Diese Demo enthält zwei Blockly-Arbeitsbereiche, die mithilfe von Ereignissen synchronisiert werden.