API가 반드시 자체 이벤트를 전달하지는 않습니다. 그럴지라도 먼저 MouseEvents를 수신해야합니다. MouseEvent.DOUBLE_CLICK
을 사용하거나 연속적인 MouseEvent.CLICK
또는 MouseEvent.MOUSE_DOWN
이벤트를 수신하여 두 번 클릭을 감지 할 수 있습니다. 어딘가에서 그러한 이벤트 중 하나 이상을 듣지 않고 더블 클릭을 감지 할 수있는 방법은 없습니다 (Flash 내에서만).
지도 서비스가 DOUBLE_CLICK 이벤트를 수신하고 있지만 올바른 객체에서 MouseEvent를 전달하지 않았을 수도 있습니다. 예를 들어,지도 서비스는이 않는 경우 :
mapRoot.mapChild.addEventListener(MouseEvent.DOUBLE_CLICK, performMeasurement);
당신은이 작업을 수행 :
mapRoot.dispatchEvent(new MouseEvent(MouseEvent.DOUBLE_CLICK));
아무것도 일어날되지 않습니다.
다른 가능성도 있습니다
당신이 실제로 마우스로 더블 클릭을 수행 할 때, 당신은 파견 여러 이벤트가 발생할 : MOUSE_DOWN, MOUSE_UP, CLICK, MOUSE_DOWN, MOUSE_UP, CLICK, DOUBLE_CLICK
이지도 서비스가 MOUSE_DOWN을 수신하는 것이 가능하고,이처럼 MOUSE_DOWN 핸들러 내부의 DOUBLE_CLICK 리스너를 추가합니다
mapRoot.addEventListener(MouseEvent.MOUSE_DOWN, _mouseDownHandler);
private function _mouseDownHandler(event:MouseEvent):void
{
var targ:InteractiveObject = event.target as InteractiveObject;
targ.addEventListener(MouseEvent.DOUBLE_CLICK, _doubleClickHandler);
}
private function _doubleClickHandler(event:MouseEvent):void
{
var targ:InteractiveObject = event.target as InteractiveObject;
targ.removeEventListener(MouseEVent.DOUBLE_CLICK, doubleClickHandler);
performMeasurement();
}
그래서 당신은 실제로 핸들러를 트리거 할 이벤트의 조합을 파견해야 할 수도 있습니다.
는 다음을 시도 할 수 있습니다 :
사용 DisplayObjectContainer.getObjectsUnderPoint()
는 클릭에 응답 할 수있는 모든 객체의 배열을 얻을 수 있습니다. 그런 다음 해당 배열의 각 객체에서 올바른 객체의 올바른 이벤트가 나타날 때까지 MouseEvents의 다양한 시퀀스를 전달하십시오.
areInaccessibleObjectsUnderPoint()
이 테스트 할 지점에 대해 true를 반환하면 액세스 할 수없는 일부 개체가 있고지도 서비스가 수신 대기중인 개체가있는 경우, 그럼 너는 운이 없어.
이 질문은 유사합니다 - http://stackoverflow.com/questions/3875748/listen-to-all-event-types-of-an-eventdispatcher – prototypical