重点是当滑动时,获取List的当前显示对象:
int view = _fui.m_gun_list.GetFirstChildInView() % _fui.m_gun_list.numItems;
int index = _fui.m_gun_list.ItemIndexToChildIndex(view);
UI_ProgressBar4 gItem = (UI_ProgressBar4)_fui.m_gun_list.GetChildAt(index);
private UI_ProgressBar4 _curItem;
private void UpdateList()
{
_fui.m_list.SetVirtualAndLoop();
_fui.m_list.itemRenderer = RenderListItem;
_fui.m_list.scrollPane.onScrollEnd.Set(OnScrollEnd);
_fui.m_list.numItems = 10;
}
private void RenderListItem(int i, GObject obj)
{
UI_ProgressBar4 gItem = obj as UI_ProgressBar4;
SetCurItem();
}
private void SetCurItem()
{
int view = _fui.m_list.GetFirstChildInView() % _fui.m_list.numItems;
int index = _fui.m_list.ItemIndexToChildIndex(view);
if (index < _fui.m_list.numChildren)
{
_curItem = (UI_ProgressBar4)_fui.m_list.GetChildAt(index);
}
}
private void OnScrollEnd(EventContext context)
{
SetCurItem();
_curIndex = (int)_curItem.data;
_fui.m_list.ScrollToView(_curIndex);
}