Ereignisse

Jede Änderung am Arbeitsbereich löst ein Ereignis aus. Diese Ereignisse beschreiben den Zustand vor und nach jeder Änderung vollständig.

Ereignisse beobachten

Arbeitsbereiche haben die Methoden addChangeListener und removeChangeListener, mit denen auf den Ereignisstream gewartet werden kann. Ein Beispiel hierfür ist die Echtzeitgenerierung von Code. Ein weiteres Beispiel ist die Demo zum maximalen Blockierlimit. Wie es oft der Fall ist, ist es beiden Beispielen nicht wichtig, was das auslösende Ereignis war. Sie sehen sich einfach den aktuellen Status des Arbeitsbereichs an.

Ein komplexerer Event-Listener würde das auslösende Ereignis untersuchen. Im folgenden Beispiel wird erkannt, wenn der Nutzer seinen ersten Kommentar erstellt, eine Benachrichtigung ausgibt und dann die Überwachung beendet, damit keine weiteren Warnungen 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 innerhalb eines Flyouts zu warten, kann ein Listener zum Arbeitsbereich des Flyouts hinzugefügt werden.

var flyoutWorkspace = yourWorkspace.getFlyout().getWorkspace();
flyoutWorkspace.addChangeListener(onFirstComment);

Bei Blockierungen gibt es eine weitere Methode, um den Ereignisstream zu überwachen. Ein Block kann eine onchange-Funktion definieren oder setOnChange verwenden, um eine Funktion festzulegen, die aufgerufen wird, wenn eine Änderung am Arbeitsbereich des Blocks erfolgt.

Ereignistypen

Informationen zu einzelnen Ereignissen finden Sie in der Referenzdokumentation.

Demo

Ein Beispiel für die coolen Dinge, die du mit Veranstaltungen alles machen kannst, findest du in der Spiegeldemo. Diese Demo hat zwei Blockly-Arbeitsbereiche, die mithilfe von Ereignissen synchronisiert werden.