Événements

Chaque modification effectuée dans l'espace de travail déclenche un événement. Ces événements décrivent de manière exhaustive l'état avant et après chaque modification.

Écouter des événements

Les espaces de travail disposent des méthodes addChangeListener et removeChangeListener permettant d'écouter le flux d'événements. C'est par exemple le cas pour la génération de code en temps réel. Un autre exemple est la démonstration de la limite de blocs maximale. Comme c'est souvent le cas, aucun de ces deux exemples ne se soucie de l'événement déclencheur. Il se contente d'examiner l'état actuel de l'espace de travail.

Un écouteur d'événements plus sophistiqué examinerait l'événement déclencheur. L'exemple suivant détecte le moment où l'utilisateur crée son premier commentaire, émet une alerte, puis arrête l'écoute afin qu'aucune autre alerte ne soit déclenchée.

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);

Pour écouter tous les événements qui se produisent à l'intérieur d'un menu déroulant, vous pouvez ajouter un écouteur à l'espace de travail de celui-ci.

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

Les blocs utilisent une autre méthode d'écoute du flux d'événements. Un bloc peut définir une fonction onchange ou utiliser setOnChange pour définir une fonction qui sera appelée chaque fois qu'une modification se produit dans l'espace de travail du bloc.

Types d'événement

Consultez la documentation de référence pour en savoir plus sur les événements individuels.

Démonstration

Pour obtenir un exemple de ce que vous pouvez faire avec les événements, consultez la démonstration en miroir. Cette démonstration présente deux espaces de travail Blockly qui sont synchronisés à l'aide d'événements.