烦恼一般都是想太多了。

0%

FairyGUI对于列表和窗口的使用

这两者其实理解起来并不难,难的是在用起来的时候不熟悉背后的逻辑也有一脸懵逼的。因为 FairyGUI 很多地方都提供了直接编辑 UI 和使用代码来控制的方式,当然,直接编辑 UI 是最简单的,但是使用代码的话,是最灵活的。

GList

Glist 继承自 GComponent,也是一个元件,我们可以利用所有 GComponent 的 API。不过这个时候我们可以更加在意 GList 本身提供的 API。

官方文档上 进行了一些非代码的介绍。

成员及构造方法

export class GList extends GComponent {
public itemRenderer: (index: number, item: GObject) => void;
public itemProvider: (index: number) => string;
public constructor() {
super();

this._node.name = "GList";
this._trackBounds = true;
this._pool = new GObjectPool();
this._layout = ListLayoutType.SingleColumn;
this._autoResizeItem = true;
this._lastSelectedIndex = -1;
this._selectionMode = ListSelectionMode.Single;
this.opaque = true;
this._align = AlignType.Left;
this._verticalAlign = VertAlignType.Top;
}
  • itemRenderer 一个渲染 item 的函数,这个就类似于 Adapter 一样,用来提供一个 Item。
  • itemProvider 官方文档没有介绍,我猜测这个东西应该指定的是一个元件的 URI。
  • _pool:一个对象池,为了在减少大量的删除和新建所造成的性能问题。

API

  • addItem(string) 指定一个 GObject 的 url ,然后建立后添加到 GList 的节点下。
  • addItemFromPool(string)。从对象池获取一个 URL 类型的 GObject,添加到 GList 节点下。
  • getFromPool(string)。从对象池获取一个 URL 类型的 GObject。如果对象池没有,那么会自动新建。
  • ReturnToPool(GObject) 将对象返回池里。
  • RemoveChildToPool(GObject) 删除一个item,并将对象返回池里。
  • RemoveChildToPoolAt(GObject) 删除一个指定位置的item,并将对象返回池里。
  • RemoveChildrenToPool(number,number) 删除一个范围内的item,或者全部删除,并将删除的对象都返回池里