Пример #1
0
        //不受ViewManager管理
        public static FWidget Create(Type cls, Action <FWidget> callback, object args = null)
        {
            System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
            FWidget widget = asm.CreateInstance(cls.FullName) as FWidget;

            if (widget != null)
            {
                string packageName   = widget.package;
                string componentName = widget.component;

                widget.__isCreating = true;
                FComponent.Create <FComponent>(packageName, componentName, widget.isAsync, (fComponent) =>
                {
                    widget.__isCreating = false;
                    if (widget.__isDisposed)
                    {
                        widget.__isDisposed = false;
                        fComponent.Dispose();
                        return;
                    }
                    OnCreateSuccess(fComponent.GetObject(), widget, args);
                    callback?.Invoke(widget);
                });
            }

            return(widget);
        }
Пример #2
0
        //加一层遮罩,List含3d物体时用
        public void SetStencil()
        {
            SetVirtual();
            // 弄一个组件和list一样大
            // 弄一个shape当做遮罩
            // 把这个list放入这个组件
            var container = FComponent.Create <FComponent, GComponent>();
            var graph     = FComponent.Create <FGraph, GGraph>();
            var parent    = this.GetParent();

            //初始化
            container.SetXY(this.GetXY());

            graph.SetXY(0, 0);
            graph.SetSize(this.GetSize());

            //
            this.RemoveFromParent();
            this.SetXY(0, 0);

            //
            parent.AddChild(container);
            container.AddChild(graph);
            container.AddChild(this);

            graph.AddRelation(this, FairyGUI.RelationType.Size);
            container.GetObject().asCom.mask = graph.GetObject().displayObject;
        }
Пример #3
0
 public void SetState <T1, T2>(ItemStateFuncT2 <T1, T2> func) where T1 : new() where T2 : FComponent, new()
 {
     _obj.asList.itemRenderer = new ListItemRenderer((index, obj) =>
     {
         FComponent fComp = null;
         if (!_dataTemplate.TryGetValue(obj, out fComp))
         {
             fComp = FComponent.Create <T2>(obj);
             _dataTemplate[obj] = fComp;
         }
         func?.Invoke(index, (T1)_dataProvider[index], (T2)fComp);
     });
 }
Пример #4
0
        private static T NewT <T>(GObject fguiObj, BaseArgs baseArgs) where T : FComponent, new()
        {
            T fComponent = null;

            if (baseArgs != null && !string.IsNullOrEmpty(baseArgs.packageName))
            {
                fComponent = FComponent.Create <T>(baseArgs.packageName, baseArgs.componentName);
            }
            else
            {
                fComponent = FComponent.Create <T>(fguiObj);
            }
            InitBaseArgs(fComponent, baseArgs);
            return(fComponent);
        }