FGUI列表的一些方法

_list.SetVirtual(); 將列表虛擬化,(不會爲每一條數據都實例化,根據視口大小創建最小量的顯示對象)必須通過_list.itemRenderer回調函數,設置列表數據。

 

在滑動列表的時候,可以用一下這段代碼來實現,距離的把控,顯示最近的。

void DoSpecialEffect()

{

//change the scale according to the distance to middle

float midX = _list.scrollPane.posX + _list.viewWidth / 2;

int cnt = _list.numChildren;

for (int i = 0; i < cnt; i++)

{

GObject obj = _list.GetChildAt(i);

float dist = Mathf.Abs(midX - obj.x - obj.width / 2);

if (dist > obj.width) //no intersection

obj.SetScale(1, 1);

else

{

float ss = 1 + (1 - dist / obj.width) * 0.24f;

obj.SetScale(ss, ss);

}

}

//當前的頁面數

_mainView.GetChild("n3").text = "" + ((_list.GetFirstChildInView() + 1) % _list.numItems);

}

 

//導入一個prefab,然後顯現出來

Object prefab = Resources.Load("Role/npc");

GameObject go = (GameObject)Object.Instantiate(prefab);

go.transform.localPosition = new Vector3(61, -89, 1000); //set z to far from UICamera is important!

go.transform.localScale = new Vector3(180, 180, 180);

go.transform.localEulerAngles = new Vector3(0, 100, 0);

_mainView.GetChild("holder").asGraph.SetNativeObject(new GoWrapper(go));

 

設置新手指導

_guideLayer = UIPackage.CreateObject("Guide", "GuideLayer").asCom;

_guideLayer.SetSize(GRoot.inst.width, GRoot.inst.height);

_guideLayer.AddRelation(GRoot.inst, RelationType.Size);

 

GObject bagBtn = _mainView.GetChild("bagBtn");

bagBtn.onClick.Add(() =>

{

_guideLayer.RemoveFromParent();

});

 

_mainView.GetChild("n2").onClick.Add(() =>

{

GRoot.inst.AddChild(_guideLayer); //!!Before using TransformRect(or GlobalToLocal), the object must be added first

Rect rect = bagBtn.TransformRect(new Rect(0, 0, bagBtn.width, bagBtn.height), _guideLayer);

 

GObject window = _guideLayer.GetChild("window");

window.size = new Vector2((int)rect.size.x, (int)rect.size.y);

window.TweenMove(new Vector2((int)rect.position.x, (int)rect.position.y), 0.5f);

});

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章