클릭 이벤트는 이벤트 위치에서 클릭 가능한 엔티티가있을 때 트리거됩니다. 즉, "드로잉 보드"의 "투명한"영역에서 "더블 클릭"하면 연결된 이벤트 핸들러가 호출되지 않습니다.
그러나 문제의 해결책으로 전체 디스플레이 영역을 차지하므로 stage
개체를 활용할 수 있습니다. 어쨌든 마우스 이벤트를 수신합니다. 이 아이디어는 stage
의 이벤트 처리기가 드로어 보드의 상대에게 이벤트 발생에 대해 알리는 것입니다.
board.doubleClickEnabled = true;
board.addEventListener(MouseEvent.DOUBLE_CLICK, onBoardDBLClick);
stage.doubleClickEnabled = true;
stage.addEventListener(MouseEvent.DOUBLE_CLICK, onStageDBLClick);
function onStageDBLClick(e:MouseEvent):void {
trace("STAGE double clicked.");
// if the location is inside the "board", then inform the "board" about the event!
if (board.getBounds(stage).contains(e.stageX, e.stageY)) {
onBoardDBLClick(e);
}
}
function onBoardDBLClick(e:MouseEvent):void {
trace("The Double-click logic of the board.");
e.stopPropagation();
}
시도했는데 작동하지 않습니다. 더블 클릭 리스너를 무대에 추가했는데 보드 외부 스테이지를 두 번 클릭하면 작동하지만 보드 자체를 두 번 클릭하면 작동하지 않습니다. – Mich
@ 나는 "드로잉"을 완성하기 위해 "보드"의 투명한 영역을 두 번 클릭하는 것에 만 관심이 있다고 생각했지만, 그렇지 않으면 발표 했으므로 재검토의 문제 일뿐입니다! 게시물에 대한 편집을 확인하십시오 :) – someOne
글로벌 클릭 수 ** deltaTime ** 변수를 가진 간단한 클릭 핸들러가 어떤 클릭이 이중인지 판단 할 수있는 방법을 제안합니다. 두 번의 연속 클릭에 대해 맞춤 최대 지연을 선언하기 때문에 (창에 대해 500ms). mouseDown 및 mouseUp 이벤트를 사용하여 이벤트 리스너를 줄이고 기존 리스너 (작업 그리기에 존재)를 사용할 수도 있습니다. –