用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c#代码库

页面拖拽效果

2016-06-09 作者: 云代码会员举报

[c#]代码库

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
//需要继承IBeginDragHandler,IEndDragHandler这两个接口
public class LevelButtonScrollRect : MonoBehaviour ,IBeginDragHandler,IEndDragHandler
{
    //ScrollRect滑动组件
    private ScrollRect scrollRect;
    //鼠标释放时组件滑动的速度
    public float smoothing = 4;
    //4个页面的位置节点
    private float[] pageArray=new float[]{ 0,0.333f,0.666f,1 };
    //toggle组件,用来页面和页面按钮的同步,需在对象物体赋值
    public Toggle[] toggleArray;
    //用来存储 推算出来 需停靠页面 的值
    private float targetHorizontalPosition=0;
    //判断是否处于拖拽状态
    private bool isDraging = false;
	void Start ()
	{
	    scrollRect = GetComponent<ScrollRect>();
	}
	void Update ()
	{
        if(isDraging)  //Mathf.Lerp让物体平衡滑动
	        scrollRect.horizontalNormalizedPosition = Mathf.Lerp(scrollRect.horizontalNormalizedPosition,
	            targetHorizontalPosition, Time.deltaTime*smoothing);
	}
    public void OnBeginDrag(PointerEventData eventData) //处于拖拽状态
    {
        isDraging = false;
    }

    public void OnEndDrag(PointerEventData eventData)  //拖拽结束
    {
        isDraging = true;
        float posX = scrollRect.horizontalNormalizedPosition;
        int index = 0;
        float offset = Mathf.Abs(pageArray[index] - posX);
        for (int i = 1; i < pageArray.Length; i++)
        {
            float offsetTemp = Mathf.Abs(pageArray[i] - posX);
            if (offsetTemp < offset)
            {
                index = i;
                offset = offsetTemp;
            }
        }
        targetHorizontalPosition = pageArray[index];
        toggleArray[index].isOn = true;
        //scrollRect.horizontalNormalizedPosition = pageArray[index];
    }
    //4个页面,4个调用方法
    public void MoveToPage1(bool isOn) {
        if (isOn)
        {
            targetHorizontalPosition = pageArray[0];
        }
    }
    public void MoveToPage2(bool isOn) {
        if (isOn) {
            targetHorizontalPosition = pageArray[1];
        }

    }
    public void MoveToPage3(bool isOn) {
        if (isOn)
        {
            targetHorizontalPosition = pageArray[2];
        }

    }
    public void MoveToPage4(bool isOn) {

        if (isOn)
        {
            targetHorizontalPosition = pageArray[3];
        }
    }
}

[代码运行效果截图]


页面拖拽效果


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...