이벤트

작업공간이 변경될 때마다 이벤트가 트리거됩니다. 이러한 이벤트는 각 변경의 전후 상태를 완전히 설명합니다.

이벤트 리슨

작업공간에는 이벤트 스트림을 리슨하는 데 사용할 수 있는 addChangeListenerremoveChangeListener 메서드가 있습니다. 한 가지 예로 실시간 코드 생성을 들 수 있습니다. 또 다른 예는 최대 블록 제한 데모입니다. 종종 그렇듯이 이 두 예 중 어느 것도 트리거 이벤트가 무엇인지 신경 쓰지 않습니다. 단순히 작업공간의 현재 상태를 확인합니다.

보다 정교한 이벤트 리스너가 트리거 이벤트를 살펴봅니다. 다음 예에서는 사용자가 첫 번째 댓글을 작성하고 알림을 보낸 다음 리슨을 중지하여 추가 알림이 트리거되지 않는 경우를 감지합니다.

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를 사용하여 블록의 작업공간에서 변경이 발생할 때마다 호출되는 함수를 설정할 수 있습니다.

이벤트 유형

개별 이벤트에 대한 자세한 내용은 참조 문서를 확인하세요.

데모

이벤트로 할 수 있는 멋진 작업의 예는 미러 데모를 확인하세요. 이 데모에는 이벤트를 사용하여 동기화된 두 개의 Blockly 작업공간이 있습니다.