blockly > 이벤트

이벤트 네임스페이스

클래스

클래스 설명
BlockBase 블록과 관련된 모든 이벤트의 추상 클래스입니다.
BlockChange 블록의 일부 요소 (예: 필드 값, 주석 등)가 변경되면 리스너에게 알립니다.
BlockCreate 블록 (또는 연결된 블록 스택)이 생성되면 리스너에게 알립니다.
BlockDelete 블록 (또는 연결된 블록 스택)이 삭제될 때 리스너에게 알립니다.
BlockDrag 블록을 수동으로 드래그/드롭할 때 리스너에게 알립니다.
BlockFieldIntermediateChange 블록 필드의 값이 변경되었지만 변경이 아직 완료되지 않았으며 블록 변경 이벤트가 뒤에 올 것으로 예상될 때 리스너에게 알립니다.
BlockMove 블록이 이동하면 리스너에게 알림을 보냅니다. 연결 간에 또는 작업공간의 한 위치에서 다른 위치로 이동할 수 있습니다.
BubbleOpen 도움말 풍선 열기 이벤트의 클래스입니다.
클릭 일부 블록 요소가 클릭되었다고 리스너에게 알립니다.
CommentBase 댓글 이벤트의 추상 클래스입니다.
CommentChange 리스너에게 워크스페이스 댓글의 콘텐츠가 변경되었음을 알립니다.
CommentCollapse
CommentCreate 리스너에게 워크스페이스 주석이 생성되었음을 알립니다.
CommentDelete 리스너에게 워크스페이스 댓글이 삭제되었음을 알립니다.
CommentDrag 댓글을 수동으로 드래그/드롭할 때 리스너에게 알립니다.
CommentMove 리스너에게 워크스페이스 주석이 이동했음을 알립니다.
CommentResize 리스너에게 워크스페이스 댓글의 크기가 조정되었음을 알립니다.
FinishedLoading 워크스페이스의 JSON/XML 역직렬화가 완료되면 리스너에게 알립니다.
선택됨 선택한 이벤트의 클래스입니다. 리스너에게 새 요소가 선택되었음을 알립니다.
ThemeChange 리스너에게 워크스페이스 테마가 변경되었음을 알립니다.
ToolboxItemSelect 리스너에게 도구 상자 항목이 선택되었음을 알립니다.
TrashcanOpen 휴지통이 열리거나 닫힐 때 리스너에게 알립니다.
UiBase UI 이벤트의 기본 클래스입니다. UI 이벤트는 멀티 사용자 편집이 작동하기 위해 전송할 필요가 없는 이벤트입니다 (예: 워크스페이스 스크롤, 확대/축소, 도구 상자 카테고리 열기). UI 이벤트는 실행취소 또는 다시 실행되지 않습니다.
VarBase 변수 이벤트의 추상 클래스입니다.
VarCreate 리스너에게 변수 모델이 생성되었음을 알립니다.
VarDelete 리스너에게 변수 모델이 삭제되었음을 알립니다.
VarRename 리스너에게 변수 모델의 이름이 변경되었음을 알립니다.
VarTypeChange 리스너에게 변수의 유형이 변경되었다고 알립니다.
ViewportChange

리스너에게 워크스페이스 노출 영역의 위치 또는 크기가 변경되었음을 알립니다.

작업공간 자체의 크기가 조절될 때는 알림을 보내지 않습니다.

추상 클래스

추상 클래스 설명
초록 이벤트의 추상 클래스입니다.

열거

열거 설명
BubbleType
ClickTarget

함수

함수 설명
clearPendingUndo() 대기 중인 실행취소 이벤트가 실행될 때 실행취소 스택에 저장되지 않도록 수정합니다. Workspace.clearUndo에서 호출합니다.
disable() 이벤트 전송을 중지합니다. 이 함수의 모든 호출은 enable도 호출해야 합니다.
disableOrphans(event) 블록이 제대로 연결되어 있는지 여부에 따라 블록이 사용 중지되는지 설정합니다. 모든 블록이 상위 블록에 연결되어야 하는 애플리케이션에 사용합니다.
enable() 이벤트 전송을 시작합니다. 해당 사용 중지 호출이 이루어졌을 때 이벤트가 이미 사용 중지된 경우가 아니라면
filter(queue)

중복을 병합하고, null 이벤트를 삭제하고, BlockChange 이벤트를 재정렬하여 대기열에 있는 이벤트를 필터링합니다.

이 함수의 기록:

이 함수는 전달된 총 이벤트 수를 대폭 줄이기 위해 원래 cf257ea5 커밋에 추가되었습니다. 처음에는 BlockMove 이벤트에만 영향을 미쳤지만 시간이 지남에 따라 다른 이벤트도 추가되었습니다.

커밋 5578458에 추가된 BlockChange 이벤트의 순서를 변경하는 코드가 추가되었습니다. 이유는 확실하지 않지만 블록 변형 중에 이벤트 순서 문제를 해결하기 위한 시도 중 일부만 성공한 것으로 보입니다. 이 코드는 병합 및 null 삭제 전에 함수 상단에 추가되었어야 하지만 지금은 잊어버린 이유로 하단에 추가되었습니다. 근본 문제와 이 불완전/잘못된 수정으로 인해 발생한 일부 실패에 관한 자세한 내용은 다음 버그 조사를 참고하세요.

https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351

나중에 PR #1205에서 원래 O(n^2) 구현이 선형 시간 구현으로 대체되었지만 이후 추가 수정사항이 적용되었습니다.

2024년 8월에 다음과 같이 여러 가지 중요한 간소화가 이루어졌습니다.

이 함수는 이전에 Workspace.prototype.undo에서 호출되었지만 이 함수에 의한 이벤트 변형이 문제 #7026의 원인이었습니다 (이벤트는 역순과 순행 순으로 다르게 결합됨). 이 문제에 대한 원래 선택된 해결 방법은 이벤트 전달에 방금 관여한 워크스페이스의 .undoStack_ 및 .redoStack_를 후처리 필터링하는 코드를 fireNow에 추가하는 것이었습니다 (PR #7069). 이로 인해 문제가 해결된 것처럼 보였지만 상당한 추가 복잡성이 발생했고 실행취소/재실행을 위해 이벤트가 처리되는 방식을 추론하기가 어려워졌습니다. 따라서 실행취소의 호출과 후처리 코드가 모두 삭제되었고 forward=true가 기본값으로 설정되었으며 forward=false로 함수를 호출하는 것은 지원 중단되었습니다.

동시에 BlockChange 이벤트의 순서를 변경하는 버그가 있는 코드는 fireInternal에서 호출되는 새 함수 enqueueEvent의 동일한 기능의 버그가 적은 버전으로 대체되어 필터가 호출될 때 이벤트가 올바른 순서로 표시됩니다.

또한 바로 인접한 이벤트만 병합되도록 이벤트 병합 코드가 수정되었습니다. 이렇게 하면 이벤트 병합으로 인해 순서가 변경되지 않도록 하면서 구현을 간소화할 수 있습니다.

fire(event)

변경 리스너에 전달할 이벤트를 큐에 추가합니다.

참고:

- 이벤트는 브라우저에서 실행되지 않는 경우 일반적으로 렌더링이 완료된 후 또는 현재 마이크로태스크가 종료될 때까지 시간 제한이 될 때까지 큐에 추가됩니다. - 큐에 추가된 이벤트는 나중에 큐에 추가된 이벤트와 결합하여 파괴적인 수정을 받을 수 있지만, 이벤트가 실행될 때까지만 가능합니다. - 이벤트는 영향을 받는 워크스페이스의 fireChangeListener 메서드를 통해 전달됩니다.

fromJson(json, workspace) JSON을 이벤트로 디코딩합니다.
get(eventType) 레지스트리에서 특정 이벤트 유형의 클래스를 가져옵니다.
getGroup() 현재 그룹
getRecordUndo() 이벤트가 실행취소 스택에 추가되는지 여부를 반환합니다.
isEnabled() 이벤트가 실행될 수 있는지 여부를 반환합니다.
setGroup(state) 그룹 시작 또는 중지
setRecordUndo(newValue) 이벤트를 실행취소 스택에 추가할지 설정합니다.

인터페이스

인터페이스 설명
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
BlockDeleteJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
ClickJson
CommentBaseJson
CommentChangeJson
CommentCollapseJson
CommentCreateJson
CommentDragJson
CommentMoveJson
CommentResizeJson
SelectedJson
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

변수

변수 설명
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

객체가 작업공간의 표시되는 부분으로 다시 이동하게 하는 이벤트 목록입니다.

연결이 끊어진 연결이 연결된 것처럼 보이지 않도록 상단으로 올리는 것과 혼동해서는 안 됩니다.

변경
클릭
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
만들기
삭제
FINISHED_LOADING
MOVE
선택됨
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
UI
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

유형 별칭

유형 별칭 설명
BumpEvent

객체가 워크스페이스의 표시된 부분으로 다시 이동하는 이벤트 유형입니다.

연결이 끊어진 연결이 연결된 것처럼 보이지 않도록 상단으로 올리는 것과 혼동해서는 안 됩니다.