Exemplo n.º 1
0
        //模态窗口
        public void Open(Type type, object args = null)
        {
            bool     isNeedCreate = true;
            bool     isNeedAdd    = true;
            ViewInfo viewInfo     = null;

            if (m_viewsMap.TryGetValue(type, out viewInfo))
            {
                FView view = viewInfo.view;

                if (IsOpened(type))
                {
                    //XXX:置顶到顶层:判断是否被遮挡,通过移除在添加的方式
                    if (GRoot.inst.numChildren > 0)
                    {
                        if (GRoot.inst.GetChildAt(GRoot.inst.numChildren - 1) != view.GetObject())
                        {
                            Close(__GetViewKey(view), false);
                        }
                        else
                        {
                            isNeedAdd    = false;
                            isNeedCreate = false;
                        }
                    }
                }

                if (isNeedAdd)
                {
                    if (!view.IsDisposed())
                    {
                        view.__OpenByManager(args);
                        isNeedCreate = false;
                    }
                }
            }

            if (isNeedCreate)
            {
                //加载View
                FView.Create(type, (fWidget) =>
                {
                    FView fView   = (FView)fWidget;
                    viewInfo      = new ViewInfo();
                    viewInfo.view = fView;

                    m_viewsMap[type] = viewInfo;
                    m_onCreated?.Invoke(viewInfo);

                    fView.__OpenByManager(args);
                }, args);
            }
        }
Exemplo n.º 2
0
        public bool IsOpened(Type type)
        {
            ViewInfo viewInfo = null;

            if (m_viewsMap.TryGetValue(type, out viewInfo))
            {
                FView view = viewInfo.view;
                if (!view.IsDisposed())
                {
                    return(view.IsVisible());
                }
            }
            return(false);
        }