2009-10-23 53 views
0

我想要在Flex中的TileList中顯示一些圖像。我的TileList尺寸是2列n行。我想要做的是將第一個項目(第一行,第一列)顯示爲空且不可點擊,並開始在第1行第2列顯示我的項目。這可能嗎?Flex TileList起始偏移量和點擊處理程序

我也想知道當我爲同一個TileList創建點擊事件時,有沒有辦法獲得點擊元素的索引?

非常感謝!
m。

回答

1

好問題。我確定有人會提供更優雅的解決方案,但是一個簡單的方法可能只是在位置0處向dataProvider添加null,並讓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 2009-10-23 13:36:57