Unity之NGUI拖拽刷新翻页
来源:互联网 发布:网络错误678怎么解决 编辑:程序博客网 时间:2024/05/21 09:59
我的一篇《Unity之NGUI常见问题汇总》中,有讲到使用UIScroll view实现拖拽功能,但最近又发现一个新的实现效果,比UIScroll view方便快捷,在此与大家分享一下。
一、 因为之前篇幅的原因没有详细讲解UIScroll View的实现方法,所以先来看看具体的实现步骤。
public UIScrollview m_zRefresh; void OnEnable() { //先注册一个UIScrollview的onDragFinished事件 m_zRefresh.onDragFinished += ChangeDirection; } void Update { //主要是在拖拽时进行判断。 JudgePageTurn() } /// <summary> /// 判断是否可以翻页 /// </summary> void JudgePageTurn() { //调用Scroll view中的isDragging,在松开鼠标时判断是否满足翻页条件。 if (m_zRefresh.isDragging) { float _scrollValue = m_zDailyRefresh.horizontalScrollBar.value; //m_zDragUpTurn和m_zDragDownTurn是定义向拉到多少距离。_scrollValue是ScrollBar的value值。 bool _upTurn = m_zDailyRefresh.transform.localPosition.y >= m_zDragUpTurn && _scrollValue <= 0.05; bool _downTurn = m_zDailyRefresh.transform.localPosition.y <= m_zDragDownTurn && _scrollValue >= 0.98; if (_upTurn || _downTurn) { m_zIsTurnPack = true; } else { m_zIsTurnPack = false; } } } /// <summary> /// 当完成拖拽后的操作 /// </summary> public void ChangeDirection () { if (m_zIsTurnPack) { if (m_zDailyRefresh.horizontalScrollBar.value <= 0.05) offsetIndex = offsetIndex - m_zMaxIndex < 0 ? 0 : offsetIndex - m_zMaxIndex; else if (m_zDailyRefresh.horizontalScrollBar.value >= 0.98) offsetIndex = offsetIndex + m_zMaxIndex > activityInfoList.Count - 1 ? offsetIndex : offsetIndex + m_zMaxIndex; InitShowPanel(); } } void OnDisable() { m_zRefresh.onDragFinished -= ChangeDirection; }
二、重点来了!!使用NGUI的UIEventListener中的OnDragEnd(我使用的是NGUI3.9.0版本)。
之前一直在使用UIEventListener中的OnClick和OnHover。也进到UIEventListener中看过,但没太在意其他事件。最近又进去仔细的看了一遍,这次让我注意到了OnDragEnd。突发奇想,想用它来实现拖拽刷新翻页效果,看看能不能优化。具体代码如下:
void OnEnable() { //m_zDragItem是要拖拽的物体 UIEventListener.Get(m_zDragItem).OnDragEnd = ChangeDirection; } /// <summary> /// 当完成拖拽后的操作 /// </summary> public void ChangeDirection (GameObject go) { if (m_zDailyRefresh.horizontalScrollBar.value <= 0.05 && m_zDailyRefresh.transform.localPosition.y >= m_zDragUpTurn) { offsetIndex = offsetIndex - m_zMaxIndex < 0 ? 0 : offsetIndex - m_zMaxIndex; InitShowPanel(); } else if (m_zDailyRefresh.horizontalScrollBar.value >= 0.98 && m_zDailyRefresh.transform.localPosition.y <= m_zDragDownTurn) { offsetIndex = offsetIndex + m_zMaxIndex > activityInfoList.Count - 1 ? offsetIndex : offsetIndex + m_zMaxIndex; InitShowPanel(); } }
三、有时换个思路会收到意想不到的结果。
不用多说啥了吧,通过两个代码明显能看到差别巨大。
1 0
- Unity之NGUI拖拽刷新翻页
- Unity之NGUI适配
- 【Unity开发】NGUI动态刷新ScrollView
- 【Unity开发】NGUI动态刷新ScrollView
- Unity基于NGUI实现拖拽功能
- unity学习之NGUI基础
- Unity开发之NGUI系列
- Unity之NGUI常见问题汇总
- unity之NGUI之Anchors代码创建
- [unity]NGUI实现背包拖拽+使用EventDelegate回调
- 【Unity&NGUI】背包拖拽问题&物体穿透
- 【Unity插件】NGUI核心组件之UICamera
- 【Unity插件】NGUI核心组件之UIAtlas
- 【Unity插件】NGUI核心组件之UIPanel
- 【Unity插件】NGUI核心组件之UIAnchor
- 【Unity插件】NGUI核心组件之UICamera
- 【Unity插件】NGUI核心组件之UIAnchor
- 【Unity插件】NGUI核心组件之UIPanel
- 51nod-1315 合法整数集
- Service全面总结
- java继承关键字extends
- Mybatis,Order By排序问题
- Ceph 网络模块(1) - 网络模块基本结构
- Unity之NGUI拖拽刷新翻页
- gridView重写
- (中谷教育视频学习)python笔记
- CSS3如何实现圆角的outline效果
- 字符串倒置两种方法
- bibtex参考文章类型
- Java线程面试题 Top 50
- 【菜鸟系列】SQL Server跨服务器(跨实例)访问数据库
- 神经网络:利用C++实现前馈神经网络