//不受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); }
//加一层遮罩,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; }
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); }); }
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); }