You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.2 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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();
}
}
}