2010-10-19 49 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