Eventos

Cada mudança no espaço de trabalho aciona um evento. Esses eventos descrevem completamente o estado anterior e posterior de cada mudança.

Ouvir eventos

Os espaços de trabalho têm métodos addChangeListener e removeChangeListener que podem ser usados para detectar o fluxo de eventos. Um exemplo é a geração de código em tempo real. Outro exemplo é a demonstração do limite máximo de blocos. Como é comum, nenhum desses dois exemplos se importa com o evento acionador. Eles simplesmente analisam o estado atual do espaço de trabalho.

Um listener de eventos mais sofisticado analisaria o evento acionado. O exemplo a seguir detecta quando o usuário cria o primeiro comentário, emite um alerta e para de ouvir para que nenhum outro alerta seja acionado.

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

Para detectar eventos que acontecem em um menu suspenso, um listener pode ser adicionado ao espaço de trabalho dele.

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

Os blocos têm outro método para detectar o fluxo de eventos. Um bloco pode definir uma função onchange ou usar setOnChange para configurar uma função que será chamada sempre que ocorrer uma alteração no espaço de trabalho do bloco.

Tipos de evento

Consulte a documentação de referência para informações sobre eventos individuais.

Demonstração

Para conferir um exemplo das coisas legais que você pode fazer com os eventos, confira a demonstração do espelho. Esta demonstração tem dois espaços de trabalho do Blockly que são mantidos sincronizados usando eventos.