2010-10-19 52 views
0

我創建了一個可重用的flex樹組件。我想堅持itemclick函數。因此,當用戶點擊樹分支中的任何一處時。分支機構擴大。 我的問題是我不知道如何讓偵聽器函數觸發。 我想要做的是完全在as3中創建樹。 (沒有mxml)。 通常我在mxml中設置itemClick樹。但我想在as3中這樣做。 我的組件有更多的功能,但我已經刪除它們,以便它更容易閱讀。flex樹itemclick事件,不起作用

任何人都可以幫我解決這個問題嗎?我想如果我重寫createChilderen函數並添加eventlistener在那裏,它會工作。但沒有運氣。

這是我的代碼;

package 
{ 

    import mx.controls.Tree; 
    import mx.controls.listClasses.IListItemRenderer; 
    import mx.events.ItemClickEvent; 
    import mx.events.ListEvent; 

    public class MyTree extends Tree 
    { 


     public function MyTree() 
     { 
      super(); 

     } 

     private function tree_itemClick(evt:ListEvent):void { 
      var item:Object = Tree(evt.currentTarget).selectedItem; 
      if (dataDescriptor.isBranch(item)) { 
       expandItem(item, !isItemOpen(item), true); 
      } 
     } 

     override protected function createChildren():void{ 
      super.createChildren(); 
      addEventListener(ListEvent.ITEM_CLICK, tree_itemClick, true); 
     } 

    } 
} 

回答

2
package 
{ 
import mx.controls.Tree; 
import mx.events.ListEvent; 

public class MyTree extends Tree 
{ 
    public function MyTree() 
    { 
     super(); 

     addEventListener(ListEvent.ITEM_CLICK, itemClickHandler); 
    } 

    private function itemClickHandler(event:ListEvent):void 
    { 
     trace("Success"); 
    } 

} 
} 
+0

謝謝你,你的男人馬克西姆。 – 2010-10-20 07:38:15