イベント

ワークスペースで変更が行われるたびに、イベントがトリガーされます。これらのイベントは、各変更の前後の状態を完全に記述します。

イベントのリッスン

ワークスペースには、イベント ストリームをリッスンするために使用できる addChangeListener メソッドと removeChangeListener メソッドがあります。その一例が、リアルタイムのコード生成です。別の例として、ブロック数の上限のデモがあります。多くの場合、これらの 2 つの例はトリガーとなるイベントの内容を考慮しません。ワークスペースの現在の状態を確認するだけです。

より高度なイベント リスナーでは、トリガーとなるイベントを参照します。次の例では、ユーザーが最初のコメントを作成し、アラートを発行して、それ以上アラートがトリガーされないようにリッスンを停止したタイミングを検出します。

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

フライアウト内で発生するイベントをリッスンするために、フライアウトのワークスペースにリスナーを追加できます。

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

ブロックには、別の方法でイベント ストリームをリッスンできます。ブロックでは、onchange 関数を定義するか、setOnChange を使用して、ブロックのワークスペースで変更が発生するたびに呼び出される関数を設定できます。

イベントタイプ

個々のイベントについては、リファレンス ドキュメントをご覧ください。

デモ

イベントの便利な機能の例については、ミラーのデモをご覧ください。このデモには、イベントを使用して同期される 2 つの Blockly ワークスペースがあります。