Eventi

Ogni modifica nell'area di lavoro attiva un evento. Questi eventi descrivono completamente lo stato prima e dopo di ogni modifica.

Ascolto di eventi

Gli spazi di lavoro dispongono dei metodi addChangeListener e removeChangeListener che possono essere utilizzati per ascoltare lo stream di eventi. Un esempio è la generazione di codice in tempo reale. Un altro esempio è la demo del limite massimo di blocchi. Come spesso accade, a nessuno di questi due esempi interessa quale sia stato l'evento scatenante. ma solo lo stato attuale dell'area di lavoro.

Un listener di eventi più sofisticato esamina l'evento di attivazione. L'esempio seguente rileva quando l'utente crea il primo commento, emette un avviso, quindi smette di ascoltare per evitare ulteriori avvisi.

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

Per ascoltare gli eventi che si verificano all'interno di un popup, un listener può essere aggiunto allo spazio di lavoro del popup.

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

I blocchi hanno un altro metodo per ascoltare lo stream di eventi. Un blocco può definire una funzione onchange o utilizzare setOnChange per impostare una funzione che verrà richiamata ogni volta che si verifica una variazione nello spazio di lavoro del blocco.

Tipi di eventi

Per informazioni sui singoli eventi, consulta la documentazione di riferimento.

Demo

Per un esempio delle cose interessanti che si possono fare con gli eventi, puoi dare un'occhiata alla demo Mirror. Questa demo ha due aree di lavoro Blockly che vengono sincronizzate tramite eventi.