2011-09-08 4 views
0

화살표 키를 무시 ...XMLListCollection에에서 항목을 표시하는 목록 포함, spark.components.List 항목에 마우스 클릭을 감지하지만 사용자 정의 구성 요소가

 [Bindable] 
     private var _games:XMLListCollection = new XMLListCollection(); 

 <s:List itemRenderer="Game" dataProvider="{_games}" 
      change="gameClicked(event)"> 
      <s:layout> 
       <s:TileLayout /> 
      </s:layout> 
     </s:List> 

여기서 XML 데이터는 다음과 같이 할 수 있습니다

   <game id="0"/> 
       <game id="9012"> 
       <user id="VK48058967" /> 
       <user id="MR14315189992643135976" /> 
       <user id="OK10218913103" /> 
       </game> 
       <game id="9013"> 
       <user id="OK151358069597" /> 
       <user id="OK515549948434" /> 
       </game> 

이 같은 스크린 샷 (최대 3와 결합 가능한 게임을 대표하는 선수) :

enter image description here

내 문제는 항목을 마우스로 클릭 할 때 변화 - 이벤트 리스너는 해고되지뿐만 아니라, 키보드의 화살표 키를 누르면 때입니다 :

 private function gameClicked(event:IndexChangeEvent):void { 
      var game:XML = event.currentTarget.selectedItem as XML; 
      if (game == null) 
       return; 
      Alert.show("Clicked game: " + [email protected]); 
      dispatchEvent(new PrefEvent(PrefEvent.GAME_CLICKED, [email protected])); 
     } 

또한 두 번 클릭하면 마우스 클릭 1 회만 내 맞춤 이벤트가 전달됩니다 (항목간에 변경이 분명하지 않기 때문에).

내 목록을 마우스 클릭에만 반응시키는 방법을 알고 계시나요?

UPDATE :

예, 전에 목록에 대한 "변경"이벤트를 사용하여 시도했지만, 나는이 목록의 스크롤바를 클릭하더라도 해고된다는 문제가있다.

답변

1

Erm, yourList.addEventListener(MouseEvent.CLICK, onClick)? 또는 MXML에서 인라인 이벤트를 사용할 수도 있습니다. 이 목록에서 모두 번 청취합니다.

사용자 지정 항목 렌더러에 고유 한 클릭 핸들러가 있고 표시 목록에서들을 수있는 곳에서 거품을내는 사용자 지정 이벤트를 보내면 더 구체적 일 수 있습니다.

+0

아니요, 전에 List에 CLICK 리스너를 추가하려고 시도했는데 List 스크롤 막대를 클릭하더라도 사용자 정의 이벤트를 전달합니다. –

+0

예, 클릭 작동 방식입니다. 조건부를 사용하여 항목 렌더러가 클릭되는지 확인하려면 'if (event.target is Game)'또는 사용자 정의 항목 렌더러가 클릭 자체를 듣고 해당 사용자 정의 이벤트 자체를 전달하도록해야합니다. –

+0

두 번째 옵션 (Game 클래스에 "클릭"리스너 추가) - 사용자 정의 PrefEvent 2 레벨을 List를 보유하고있는 사용자 정의 로비 구성 요소의 부모에게 전달하는 방법은 무엇입니까? –