如何删除ItemRenderer中的EventListener?

时间:2012-03-04 17:21:34

标签: flex itemrenderer

我正在创建一个动作脚本自定义itemRenderer,我有:

override protected function createChildren():void {
        super.createChildren();
        addEventListener(MouseEvent.CLICK, clicked,false,0,true);
}

当我完成itemRenderer时,我在哪里放置removeEventListener

2 个答案:

答案 0 :(得分:1)

override protected function createChildren():void {
        super.createChildren();
        addEventListener(Event.ADDED_TO_STAGE, activateDeactivate, false, 0, true); 
        //will be removed by GC due to weak reference
}

private function activateDeactivate( evt:Event ):void
{
    switch( evt.type )
    {
        case Event.ADDED_TO_STAGE:
            addEventListeners();
            break;
        case Event.REMOVED_FROM_STAGE:
            removeEventListeners();
            break;
    }
}

protected function addEventListeners( ):void
{
    addEventListener(Event.REMOVED_FROM_STAGE, activateDeactivate, false, 0, true);

    //add all other event listeners here or override this method in your class
}

protected function removeEventListeners( ):void
{
    removeEventListener(Event.REMOVED_FROM_STAGE, activateDeactivate);

    //Remove all other event listeners here or override this method in your class
}

答案 1 :(得分:0)

您可以在调度Event.REMOVED时删除事件侦听器。但首先,您应该添加一个事件监听器来接收它。

相关问题