2010-01-10 7 views
2

flex4의 사용자 지정 List 구성 요소로 작업하고 있습니다. 사용자 지정 ItemRenderer를 만들었고 모든 것이 보이고 작동하지만 더블 클릭 이벤트를 얻으려고합니다. 열쇠가 내려지고 다른 모든 이벤트가 있지만이 이벤트는 아닙니다. 나는 List 구성 요소Flex4 목록 항목 더블 클릭 이벤트

doubleClickEnabled="true" 

에 더블 클릭을 설정 한 내가

ListEvent.ITEM_DOUBLE_CLICK 

내가만큼 내가 원하는대로 클릭 수에 대한 이벤트 리스너를 추가 한 이벤트는 트리거되지 않습니다. 조언을 사용할 수 있습니다. 감사합니다. .

답변

5

MouseEvent.DOUBLE_CLICK을 듣고 싶다면 event.target을 사용하여 클릭 한 내용을 알아낼 수 있습니다.

+0

감사합니다. 나는 이것을 사용하고 잘 작동한다. 이것이 올바른 방법 인 것 같습니다. –

1

나는 이것 때문에 몇 시간 동안 벽에 머리를 두드렸다. Adobe는 구성 요소 기능으로 거꾸로 돌아갑니다!

우리는 항목의 컨테이너 목록의 DATAGROUP,에 DOUBLE_CLICK 이벤트 리스너를 추가 할 겁니다 :

list.dataGroup.doubleClickEnabled = true; 
list.dataGroup.addEventListener(MouseEvent.DOUBLE_CLICK, handleDoubleClick); 

이 지금은, 좋은 작동하지 어쨌든, 나는 괜찮은 해결책을 발견 스크롤러에서 두 번 클릭을 유도하지만 항목이없는 목록의 열린 공간 (dataGroup 자체)에서 더블 클릭을 유발합니다. 따라서 우리는 e.target! = dataGroup 인 경우에만 이벤트 핸들러를 계속 진행합니다 :

private function handleDoubleClick(e:MouseEvent):void 
{ 
    if (list.dataGroup != e.target) 
    { 
    // double click code 
    } 
} 

이제는 잘 작동합니다. :) phew! 우리는 ...이 물건에 시간을 낭비해서는 안


나쁜 솔루션 - 때때로 e.target 실제 라벨이 때문에>,리스트의 itemRenderer를의 클래스에 e.target의 클래스를 비교하려고하지 마십시오 항목의

관련 문제