Eventos

Cada cambio en el lugar de trabajo activa un evento. Estos eventos describen por completo el estado anterior y posterior de cada cambio.

Escucha de eventos

Los lugares de trabajo tienen métodos addChangeListener y removeChangeListener que se pueden usar para escuchar la transmisión de eventos. Un ejemplo es la generación de código en tiempo real. Otro ejemplo es la demostración del límite máximo de bloques. Como suele ser el caso, a ninguno de estos dos ejemplos le importa cuál fue el evento activador. Simplemente, observan el estado actual del espacio de trabajo.

Un objeto de escucha de eventos más sofisticado observaría el evento activador. En el siguiente ejemplo, se detecta cuando el usuario crea su primer comentario, emite una alerta y, luego, deja de escuchar para que no se activen más alertas.

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 escuchar cualquier evento que ocurra dentro de un menú flotante, se puede agregar un objeto de escucha al espacio de trabajo del menú flotante.

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

Los bloques tienen otro método para escuchar el flujo de eventos. Un bloque puede definir una función onchange o usar setOnChange para establecer una función a la que se llamará cada vez que se produzca un cambio en el espacio de trabajo del bloque.

Tipos de eventos

Consulta la documentación de referencia para obtener información sobre eventos individuales.

Demostración

Para ver un ejemplo de lo que puedes hacer con los eventos, consulta la demo de espejo. Esta demostración tiene dos espacios de trabajo de Blockly que se mantienen sincronizados con eventos.