Files

113 lines
3.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
using FairyGUI;
public class ScrollPaneMain : MonoBehaviour
{
GComponent _mainView;
GList _list;
void Awake()
{
Application.targetFrameRate = 60;
Stage.inst.onKeyDown.Add(OnKeyDown);
}
void Start()
{
_mainView = this.GetComponent<UIPanel>().ui;
_list = _mainView.GetChild("list").asList;
_list.itemRenderer = RenderListItem;
_list.SetVirtual();
_list.numItems = 1000;
_list.onTouchBegin.Add(OnClickList);
_mainView.GetChild("box").asCom.onDrop.Add(OnDrop);
LongPressGesture gesture = new LongPressGesture(_list);
gesture.once = true;
gesture.trigger = 1f;
gesture.onAction.Add(OnLongPress);
}
void RenderListItem(int index, GObject obj)
{
GButton item = obj.asButton;
item.title = "Item " + index;
item.scrollPane.posX = 0; //reset scroll pos
//Be carefull, RenderListItem is calling repeatedly, dont call 'Add' here!
//请注意RenderListItem是重复调用的不要使用Add增加侦听
item.GetChild("b0").onClick.Set(OnClickStick);
item.GetChild("b1").onClick.Set(OnClickDelete);
}
void OnClickList(EventContext context)
{
//find out if there is an item in edit status
//查找是否有项目处于编辑状态
int cnt = _list.numChildren;
for (int i = 0; i < cnt; i++)
{
GButton item = _list.GetChildAt(i).asButton;
if (item.scrollPane.posX != 0)
{
//Check if clicked on the button
if (item.GetChild("b0").asButton.IsAncestorOf(GRoot.inst.touchTarget)
|| item.GetChild("b1").asButton.IsAncestorOf(GRoot.inst.touchTarget))
{
return;
}
item.scrollPane.SetPosX(0, true);
//avoid scroll pane default behavior
//取消滚动面板可能发生的拉动。
item.scrollPane.CancelDragging();
_list.scrollPane.CancelDragging();
break;
}
}
}
void OnLongPress(EventContext context)
{
//find out which item is under finger
//逐层往上知道查到点击了那个item
GObject obj = GRoot.inst.touchTarget;
GObject p = obj.parent;
while (p != null)
{
if (p == _list)
break;
p = p.parent;
}
if (p == null)
return;
Debug.Log(obj.text);
DragDropManager.inst.StartDrag(obj, obj.icon, obj.text);
}
void OnDrop(EventContext context)
{
_mainView.GetChild("txt").text = "Drop " + (string)context.data;
}
void OnClickStick(EventContext context)
{
_mainView.GetChild("txt").text = "Stick " + (((GObject)context.sender).parent).text;
}
void OnClickDelete(EventContext context)
{
_mainView.GetChild("txt").text = "Delete " + (((GObject)context.sender).parent).text;
}
void OnKeyDown(EventContext context)
{
if (context.inputEvent.keyCode == KeyCode.Escape)
{
Application.Quit();
}
}
}