交流群:462197261站长百科站长论坛热门标签收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
点击这里给我发消息
  • 当前位置:
  • UGUI ScrollRect实现带按钮翻页支持拖拽

    本文实例为大家分享了UGUI ScrollRect带按钮翻页支持拖拽的具体代码,供大家参考,具体内容如下

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    using UnityEngine.EventSystems;
    using System.Collections.Generic;
    using System;
    /// <summary>
    /// 略知CSharp 
    /// </summary>
    public class ScrollRectHelper : MonoBehaviour, IBeginDragHandler, IEndDragHandler
    {
     
     public float smooting = 5;    //滑动速度
     public List<GameObject> listItem;   //scrollview item 
     public int pageCount = 3;    //每页显示的项目
     
     ScrollRect srect;
     float pageIndex;     //总页数
     bool isDrag = false;    //是否拖拽结束
     List<float> listPageValue = new List<float> { 0 }; //总页数索引比列 0-1
     float targetPos = 0;    //滑动的目标位置
     float nowindex = 0;     //当前位置索引
     
     void Awake()
     {
     srect = GetComponent<ScrollRect>();
     ListPageValueInit();
     }
     
     //每页比例
     void ListPageValueInit()
     {
     pageIndex = (listItem.Count / pageCount)-1;
     if (listItem != null && listItem.Count != 0)
     {
      for (float i = 1; i <= pageIndex; i++)
      {
      listPageValue.Add((i / pageIndex));
      }
     }
     }
     
     void Update()
     {
     if (!isDrag)
      srect.horizontalNormalizedPosition = Mathf.Lerp(srect.horizontalNormalizedPosition, targetPos, Time.deltaTime * smooting);
     }
     /// <summary>
     /// 拖动开始
     /// </summary>
     /// <param name="eventData"></param>
     public void OnBeginDrag(PointerEventData eventData)
     {
     isDrag = true;
     }
     /// <summary>
     /// 拖拽结束
     /// </summary>
     /// <param name="eventData"></param>
     public void OnEndDrag(PointerEventData eventData)
     {
     isDrag = false;
     var tempPos = srect.horizontalNormalizedPosition; //获取拖动的值
     var index = 0;
     float offset = Mathf.Abs(listPageValue[index] - tempPos); //拖动的绝对值
     for (int i = 1; i < listPageValue.Count; i++)
     {
      float temp = Mathf.Abs(tempPos - listPageValue[i]);
      if (temp < offset)
      {
      index = i;
      offset = temp;
      }
     }
     targetPos = listPageValue[index];
     nowindex = index;
     }
     
     public void BtnLeftGo()
     {
     nowindex = Mathf.Clamp(nowindex - 1, 0, pageIndex);
     targetPos = listPageValue[Convert.ToInt32(nowindex)];
     }
     
     public void BtnRightGo()
     {
     nowindex = Mathf.Clamp(nowindex + 1, 0, pageIndex);
     targetPos = listPageValue[Convert.ToInt32(nowindex)];
     
     }
    }

    DEMO 下载地址

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持北冥有鱼。


    广而告之:
    热门推荐:
    javascript 三种编解码方式

    1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。 例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce···

    PHP判断一个数组是另一个数组子集的方法详解

    本文实例讲述了PHP判断一个数组是另一个数组子集的方法。分享给大家供大家参考,具体如下: 前言 今天完成一个算法的过程中,有几个需求模块,其中就有判断$a数组是否是$b数组的子集,可能最近我写c比较多,直接就用for循环实现了,但是感觉代码量比较大,不够优雅!在qq群里集···

    yii2中使用webuploader实现图片上传的实战项目

    图片上传几乎是应用必备,前面也针对 kartik 的 fileinput 做了一篇详细的说明,不过很多人反馈各种问题,下面针对 webuploader 的使用单独写了一个组件。该组件可以更好的处理 Yii2 在图片上传过程中带来的一系列问题,目前支持多图多字段多modal的混合上传。 介绍之前我们先···

    火狐浏览器(firefox)下获得Event对象以及keyCode

    复制代码 代码如下:var isie = (document.all) ? true:false; var key; var ev; if(isie){ key = window.event.keyCode; ev = window.event; }else{ key = e.which; ev = e; } 这个时候可以alert(key) 看看, 但是 要是想用到 ev.returnValue = true; // IE ev.prevent···

    如何打造秒收网站内容的站点

      第一阶段:前三个月,做好站内细节和原创文章的质量。   网站优化就像是谈恋爱,没有在女神面前树立一个良好的印象之前,千万不要表白,女神也不会把精力花在我们身上,刚开始唯一能做的就是如何让女神看我们顺眼。   同理,新站刚开始上线时,一定要一步步来,做好站···

    PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径

    我在服务器上有每天切割nginx日志的习惯,所以针对每天各大搜索引擎来访,总能记录一些404页面信息,传统上我只是偶尔分析下日志,但是对于很多日志信息的朋友,人工来筛选可能不是一件容易的事情,这不我个人自己慢慢研究了一点点,针对谷歌、百度、搜搜、360搜索、宜搜、搜狗···

    PHP+RabbitMQ实现消息队列的完整代码

    前言 为什么使用RabbitMq而不是ActiveMq或者RocketMq? 首先,从业务上来讲,我并不要求消息的100%接受率,并且,我需要结合php开发,RabbitMq相较RocketMq,延迟较低(微妙级)。至于ActiveMq,貌似问题较多。RabbitMq对各种语言的支持较好,所以选择RabbitMq。 先安装PHP对应···

    php遍历目录方法小结

    本文实例总结了php遍历目录方法。分享给大家供大家参考。具体如下: 1. 方法1     <?php function myscandir($pathname){ foreach( glob($pathname) as $filename ){ if(is_dir($filename)){ myscandir($filename.'/*'); ···

    discuz X3.2diy调用指定日期帖子

    依然是用自定义可diy页面来测试的,自定义页面的制作之前发过,网上也有很多教程,这里只贴下模板代码: <!--{template common/header}--> <!--{eval $min_date = strtotime($_GET['date']);}--> <!--{eval $max_date = $min_date+86400}--> <···

    基于jQuery实现弹幕APP

    今天闲着无聊,写了个弹幕APP,主要实现以下几个功能: 1.点击“弹幕发射”或回车可以输出弹幕到弹幕墙上。 2.弹幕的运行轨迹是从弹幕墙的最右边到最左边,Y轴的数值在弹幕墙的高度内随机,颜色HEX随机,速度随机。 3.右侧的表格可以储存弹幕内容以及弹幕的发射时间,越靠近现在···