/// <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); }
/// <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); }
/// <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); }