コード例 #1
0
        /// <summary>
        /// 打开一个弹窗界面
        /// </summary>
        /// <param name="popupOperate"></param>
        /// <param name="belongPageView">当前弹窗属于哪个Page 管理 ,如果=null则表示属于当前打开的界面 否则指定的参数界面 </param>
        /// <param name="isFailRecord">如果是因为优先级而无法弹出 则表示是否需要记录 如果为false 则当无法显示时候不会自动弹出,而是隐藏了</param>
        /// <param name="parameter"></param>
        ///
        public void OpenPopUp(PopupOpenOperateEnum popupOperate, UIBasePageView belongPageView, bool isFailRecord, UIParameterArgs parameter)
        {
            if (parameter == null)
            {
                Debug.LogError("parameter 不要使用null  使用默认的 UIParameterArgs.Create() 无参数方法替代");
                return;
            }
#if UNITY_EDITOR
            if (this.WindowType != WindowTypeEnum.PopUp)
            {
                Debug.LogError("OpenPopUp Fail,Not Popup Window " + this.name);
                return;
            }
#endif
            Dictionary <int, UIBasePopupView> allWillHidePopupView = GetWillHidePopupView(this, popupOperate, isFailRecord, parameter);
            foreach (var item in allWillHidePopupView)
            {
                item.Value.HideWindow(UIParameterArgs.Create());
                m_AllRecordViewPopup.RemoveAt(item.Key);
            }
            if (belongPageView == null)
            {
                belongPageView = UIBasePageView.CurOpenPage;
            }

            UIParameterArgs args0 = UIParameterArgs.Create(belongPageView, isFailRecord);
            this.ShowWindow(Helper.Instance.MegerUIParameter(args0, parameter)); //注意这里的第一个参数
            m_AllRecordViewPopup.Add(this);
        }
コード例 #2
0
        /// <summary>
        /// 打开一个弹窗时候根据需求 获取需要关闭的弹窗
        /// </summary>
        /// <param name="view"></param>
        /// <param name="popupOperate"></param>
        private Dictionary <int, UIBasePopupView> GetWillHidePopupView(UIBasePopupView popupView, PopupOpenOperateEnum popupOperate, bool isFailRecord, UIParameterArgs parameter)
        {
            Dictionary <int, UIBasePopupView> allWillHidePopupView = new Dictionary <int, UIBasePopupView>();

            if (m_AllRecordViewPopup.Count == 0)
            {
                return(allWillHidePopupView);
            }

            switch (popupOperate)
            {
            case PopupOpenOperateEnum.KeepPreviousAvailable:
                break;

            case PopupOpenOperateEnum.HideAllOpenView:
                for (int dex = 0; dex < m_AllRecordViewPopup.Count; ++dex)
                {
                    allWillHidePopupView.Add(dex, m_AllRecordViewPopup[dex]);
                }
                break;

            case PopupOpenOperateEnum.HideCurPagePopupView:
                for (int dex = 0; dex < m_AllRecordViewPopup.Count; ++dex)
                {
                    if (m_AllRecordViewPopup[dex].BelongPageView == popupView.BelongPageView)
                    {
                        allWillHidePopupView.Add(dex, m_AllRecordViewPopup[dex]);
                    }
                }     //获取当前弹窗所属的页面
                break;

            case PopupOpenOperateEnum.PriorityOrder:
                if (m_AllRecordViewPopup[m_AllRecordViewPopup.Count - 1].Priority >= popupView.Priority)
                {
                    if (isFailRecord)
                    {
                        RecordWillPopupView(popupView.BelongPageView, popupView);
                        popupView.FailShowByPriority(parameter);      //记录参数
                    }
                    else
                    {
                        popupView.HideWindow(UIParameterArgs.Create());
                    }
                }      //加入到待弹出界面中
                else
                {
                    allWillHidePopupView.Add(m_AllRecordViewPopup.Count - 1, m_AllRecordViewPopup[m_AllRecordViewPopup.Count - 1]);
                }
                break;

            default:
                Debug.LogError("没有处理的枚举类型 " + popupOperate);
                break;
            }
            return(allWillHidePopupView);
        }
コード例 #3
0
 /// <summary>
 /// 打开一个弹窗界面 (属于当前页面的)
 /// </summary>
 /// <param name="popupOperate"></param>
 /// <param name="isFailRecord">如果是因为优先级而无法弹出 则表示是否需要记录 如果为false 则当无法显示时候不会自动弹出,而是隐藏了</param>
 public void OpenPopUp(PopupOpenOperateEnum popupOperate, bool isFailRecord = true)
 {
     OpenPopUp(popupOperate, UIBasePageView.CurOpenPage, isFailRecord, UIParameterArgs.Create());
 }
コード例 #4
0
 /// <summary>
 /// 打开一个弹窗界面 (属于当前页面的)
 /// </summary>
 /// <param name="popupOperate"></param>
 /// <param name="isFailRecord">如果是因为优先级而无法弹出 则表示是否需要记录 如果为false 则当无法显示时候不会自动弹出,而是隐藏了</param>
 /// <param name="parameter"></param>
 ///
 public void OpenPopUp(PopupOpenOperateEnum popupOperate, bool isFailRecord, UIParameterArgs parameter)
 {
     OpenPopUp(popupOperate, UIBasePageView.CurOpenPage, isFailRecord, parameter);
 }