Exemplo n.º 1
0
        /// <summary>
        /// 添加监听事件
        /// </summary>
        /// <param name="eventName">事件名称</param>
        /// <param name="listener">监听方法</param>
        /// <returns>绑定是否成功</returns>
        public virtual bool AddEvent(string eventName, EventDispatcherListener listener)
        {
            List <EventDispatcherListener> list = null;

            if (HasKey(eventName))
            {
                list = mDispatcher[eventName];
            }
            else
            {
                lock (mDispatcher)
                {
                    list = new List <EventDispatcherListener>();
                    mDispatcher.Add(eventName, list);
                }
            }
            if (!list.Contains(listener))
            {
                lock (list)
                {
                    list.Add(listener);
                }
                return(true);
            }
            Debug.Log("Have Same listener eventName:" + eventName + " listener :" + listener);
            return(false);
        }
Exemplo n.º 2
0
 /// <summary>
 /// 是否存在此事件名
 /// </summary>
 /// <param name="eventName">事件名</param>
 /// <param name="listener">事件回调函数</param>
 /// <returns>是否存在</returns>
 public virtual bool HasEvent(string eventName, EventDispatcherListener listener)
 {
     if (HasKey(eventName))
     {
         return(mDispatcher[eventName].Contains(listener));
     }
     return(false);
 }
Exemplo n.º 3
0
 /// <summary>
 /// 移除监听事件
 /// </summary>
 /// <param name="eventName">事件名称</param>
 /// <param name="listener">回调函数</param>
 /// <returns>移除是否成功</returns>
 public virtual bool RemoveEvent(string eventName, EventDispatcherListener listener)
 {
     if (HasKey(eventName))
     {
         List <EventDispatcherListener> list = mDispatcher[eventName];
         int ind = list.IndexOf(listener);
         if (ind >= 0)
         {
             lock (list)
             {
                 list.RemoveAt(ind);
                 if (list.Count == 0)
                 {
                     mDispatcher.Remove(eventName);
                 }
             }
             return(true);
         }
     }
     return(false);
 }