2009-10-23 4 views
0

Flex의 TileList에 표시 할 이미지가 있습니다. My TileList 차원은 2 열 x n 행입니다. 내가하고 싶은 일은 첫 번째 항목 (행 1, 열 1)을 비어 있고 클릭 할 수 없도록 표시하고 행 1, 열 2에서 항목을 표시하기 시작하는 것입니다.플렉스 TileList 시작 오프셋 및 클릭 핸들러

나는 또한 동일한 TileList에 대한 클릭 이벤트를 만들 때 클릭 한 요소의 인덱스를 얻는 방법이 있습니까?

대단히 감사합니다!
m.

답변

1

좋은 질문입니다. 누군가가 좀 더 세련된 솔루션을 제공 할 것이라고 확신하지만 간단한 접근은 dataProvider에 0을 추가하고 itemRenderer가 대체 콘텐츠를 표시하거나 null을 처리하도록하는 것일 수도 있습니다. 모든.

클릭 한 요소의 색인을 추출하려면 사용할 수있는 ListEvent 객체에 대한 여러 가지 속성이 있습니다. event.currentTarget.selectedIndex (다중 선택을 사용하는 경우 event.currentTarget.selectedIndices), event .columnIndex 및 .rowIndex 또는 event.itemRenderer. TileList의 itemRendererToIndex 속성과 함께 사용할 수 있습니다.

은 여기에 빠른 - 및 - 더러운 응용 프로그램 코드가 이러한 방식을 모두 보여입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"> 

    <mx:Script> 
     <![CDATA[ 

      import mx.controls.Alert; 
      import mx.events.ListEvent; 
      import mx.collections.ArrayCollection; 

      private var dpSource:Array = [ 
       null, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
       {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"} 
      ];  

      [Bindable] 
      private var dp:ArrayCollection = new ArrayCollection(dpSource); 

      private function myList_itemClick(event:ListEvent):void 
      { 
       Alert.show("You clicked the item at position (" + event.columnIndex + ", " + event.rowIndex + "), which is item " + myList.itemRendererToIndex(event.itemRenderer).toString() + " in the list."); 
      } 

     ]]> 
    </mx:Script> 

    <mx:TileList id="myList" dataProvider="{dp}" itemClick="myList_itemClick(event)"> 
     <mx:itemRenderer> 
      <mx:Component> 
       <mx:Canvas> 

        <mx:Script> 
         <![CDATA[ 

          override public function set data(value:Object):void 
          { 
           super.data = value; 
          } 

         ]]> 
        </mx:Script> 

        <mx:Image source="{data.src}" width="100" height="60" visible="{data != null}" /> 
        <mx:Label text="No item!" visible="{data == null}" /> 

       </mx:Canvas> 
      </mx:Component> 
     </mx:itemRenderer> 
    </mx:TileList> 

</mx:Application> 

는 희망이 도움이! 당신이 가지고 있다면 질문을 게시하십시오.

+0

대단히 감사합니다. 첫 번째 항목으로 'null'을 사용하고 itemRenderer를 처리하는 예는 훌륭하게 작동합니다! TileList에서 선택한 색인을 표시하는 것과 같습니다. 많은 많은 감사 ;-) – errata