事件监听优化处理

组件mxml添加两个事件 add=”add(event)” remove=”remove(event)”

注:ItemRenderer 无法监听到add和remove事件 所以无法使用该方法

/**
*组件添加事件
*/

protectedfunction add(event:Event):void
{
    setEventListener(true);
}

/**
 *组件移除事件
 */
protectedfunction remove(event:Event):void
{
    setEventListener(false);
    System.gc();
}

/**
*设置事件监听
* @parambool添加还是移除监听
*/
publicfunction setEventListener(bool:Boolean):void
{
    if(bool)
    {
        var str:String = "addEventListener";
    }
    else
    {
        str = "removeEventListener";
    }

    //添加组件需要用的监听事件
    btn_back[str](MouseEvent.CLICK, btn_back_clickHandler);
    btn_msg[str](MouseEvent.CLICK, btn_msg_clickHandler);
    btn_send[str](MouseEvent.CLICK, btn_send_clickHandler);
    btn_change[str](MouseEvent.CLICK, btn_change_clickHandler);
    btn_extends[str](MouseEvent.CLICK, btn_extends_clickHandler);
    chatMsg[str](MouseEvent.CLICK, chatMsg_clickHandler);
    txt_input[str](SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE,txt_number_ActivateHandler);
    txt_input[str](SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE,txt_number_DeactivateHandler);
    this[str](KeyboardEvent.KEY_DOWN,keyDown);
}

/**
*实体按键事件
*/
privatefunction keyDown(e:KeyboardEvent):void
{
    switch(e.keyCode)
    {
    case Keyboard.BACK:
        e.preventDefault();
        if(grp_extends.height == 0 && grp_face.height == 0)
        {
            btn_back_clickHandler(null);
        }
        else
        {
            chatMsg_clickHandler(null);
        }
        System.gc();
        break;
    case Keyboard.MENU:
        break;
    }
}