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.