Exemple #1
0
    /// <summary>
    /// 添加事件
    /// </summary>
    /// <param name="eventEnumType"></param>
    /// <param name="eventName"></param>
    /// <param name="eventCall"></param>
    public static GenericEvent_CallBack AddListener(GenericEventEnumType eventEnumType, string eventName, GenericEvent_CallBack listener)
    {
        GenericEvent_CallBack _listener = listener;

        switch (eventEnumType)
        {
        case GenericEventEnumType.Generic:
            if (genericEvent != null)
            {
                _listener = genericEvent.AddListener(eventName, listener);
            }
            break;

        case GenericEventEnumType.Message:
            if (messageEvent != null)
            {
                _listener = messageEvent.AddListener(eventName, listener);
            }
            break;

        default:
            break;
        }

        return(_listener);
    }
Exemple #2
0
        /// <summary>
        /// 去除事件
        /// </summary>
        /// <param name="eventName"></param>
        /// <param name="listener"></param>
        public virtual void RemoveListener(string eventName, GenericEvent_CallBack listener)
        {
            EventObject eventObject = eventObjects.Find(e => e.eventName == eventName);
            if (eventObject != null)
            {
                bool Exist = false;
                foreach (var item in eventObject.eventCall.GetInvocationList())
                {
                    if (item.Method == listener.Method)
                    {
                        Exist = true;
                    }
                }
                if (!Exist)
                {
                    Debug.Log("listener监听事件不存在字典中!移除监听参数不能为Lambda表达式。\n解决方法请参考添加监听方法 (AddListener)的返回值!!!");
                    return;
                }

                eventObject.eventCall -= listener;//移除监听  
                if (eventObject.eventCall == null)//该类型是否还有回调,如果没有,移除  
                    eventObjects.Remove(eventObject);
            }
            else
            {
                Debug.Log(string.Concat("事件《{0}》不存在", eventName));
            }
        }
Exemple #3
0
 /// <summary>
 /// 添加事件
 /// </summary>
 /// <param name="eventName"></param>
 /// <param name="eventCall"></param>
 public virtual GenericEvent_CallBack AddListener(string eventName, GenericEvent_CallBack listener)
 {
     EventObject eventObject = eventObjects.Find(e => e.eventName == eventName);
     if (eventObject != null)
     {
         eventObject.eventCall += listener;
     }
     else
     {
         eventObject = new EventObject(eventName, listener);
         eventObjects.Add(eventObject);
     }
     return listener;
 }
Exemple #4
0
    /// <summary>
    /// 去除事件
    /// </summary>
    /// <param name="eventEnumType"></param>
    /// <param name="eventName"></param>
    /// <param name="listener"></param>
    public static void RemoveListener(GenericEventEnumType eventEnumType, string eventName, GenericEvent_CallBack listener)
    {
        switch (eventEnumType)
        {
        case GenericEventEnumType.Generic:
            if (genericEvent != null)
            {
                genericEvent.RemoveListener(eventName, listener);
            }
            break;

        case GenericEventEnumType.Message:
            if (messageEvent != null)
            {
                messageEvent.RemoveListener(eventName, listener);
            }
            break;

        default:
            break;
        }
    }
Exemple #5
0
 /// <summary>
 /// 添加事件
 /// </summary>
 /// <param name="eventEnumType"></param>
 /// <param name="eventNames"></param>
 /// <param name="listener"></param>
 public static void AddListeners(GenericEventEnumType eventEnumType, string[] eventNames, GenericEvent_CallBack listener)
 {
     foreach (string eventName in eventNames)
     {
         AddListener(eventEnumType, eventName, listener);
     }
 }
Exemple #6
0
 //构造函数
 public EventObject(string eventName, GenericEvent_CallBack eventCall)
 {
     this.eventName = eventName;
     this.eventCall = eventCall;
 }