Eventos

Toda alteração no espaço de trabalho aciona um evento. Esses eventos descrevem totalmente o estado antes e depois de cada mudança.

Ouvir eventos

Os espaços de trabalho têm os 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 sempre, nenhum desses dois exemplos se importa com o que foi o evento acionador. Eles apenas observam o estado atual do espaço de trabalho.

Um listener de eventos mais sofisticado analisaria o evento de acionamento. 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 dentro de um menu suspenso, adicione um listener ao espaço de trabalho do menu suspenso.

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

Os blocos têm outro método de detecção do fluxo de eventos. Um bloco pode definir uma função onchange ou usar setOnChange para definir 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 ver algumas 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 sincronizados por meio de eventos.