zoukankan      html  css  js  c++  java
  • 嵌套ScrollView 左右滑动不影响上下滑动

    using UnityEngine;
    using System.Collections;
    
    public class UIMultDragScrollView : MonoBehaviour {
        public UIScrollView hScrollView;
        public UIScrollView vScrollView;
        public UIDragScrollView dragScrollView;
        public float directionTolerance = 0.2f;
        bool dragCheck = true; 
        public float direcDegle = 45;
        public void OnDrag(Vector2 delta)
        {
            int sd = -1;
            if (dragCheck)
            {
                dragCheck = false;
                sd = GetSwipeDirection(UICamera.currentTouch.delta, directionTolerance);
            }
            Debug.Log("swp"+sd);
            if( sd == 0)
            {
                Debug.Log("左");
                dragScrollView.scrollView = hScrollView;
                vScrollView.movement = UIScrollView.Movement.Custom;
                vScrollView.currentMomentum = new Vector3(0, 0);
                hScrollView.movement = UIScrollView.Movement.Horizontal;
                hScrollView.enabled = true;
                vScrollView.enabled = false;
                vScrollView.Press(false);
                hScrollView.Press(true);
               // hScrollView.Drag();
            }
            if (sd == 1)
            {
                Debug.Log("上");
                dragScrollView.scrollView = vScrollView;
                hScrollView.enabled = false;
                hScrollView.movement = UIScrollView.Movement.Custom;
                hScrollView.currentMomentum = new Vector3(0, 0);
                vScrollView.movement = UIScrollView.Movement.Vertical;
                vScrollView.enabled = true;
                hScrollView.Press(false);
                vScrollView.Press(true);
               // vScrollView.Drag();
            }
        }
        void OnPress(bool isDown)
        {
            if (isDown)
            {
                dragCheck = true;
            }
        }
        int GetSwipeDirection(Vector3 dir, float tolerance)
        {
            float minSwipeDot = Mathf.Clamp01(1.0f - tolerance);
            if (Mathf.Rad2Deg * (Mathf.Acos(Vector2.Dot(dir, Vector2.right) / (dir.magnitude * Vector2.right.magnitude))) <= direcDegle
                && Vector2.Dot(dir, Vector2.right) >= minSwipeDot)
                return 0;
            if (Mathf.Rad2Deg * (Mathf.Acos(Vector2.Dot(dir, -Vector2.right) / (dir.magnitude * (-Vector2.right).magnitude))) <= direcDegle
                && Vector2.Dot(dir, -Vector2.right) >= minSwipeDot)
                return 0;
            if (Mathf.Rad2Deg * (Mathf.Acos(Vector2.Dot(dir, Vector2.up) / (dir.magnitude * Vector2.up.magnitude))) <= 90 - direcDegle
                && Vector2.Dot(dir, Vector2.up) >= minSwipeDot)
                return 1;
            if (Mathf.Rad2Deg * (Mathf.Acos(Vector2.Dot(dir, -Vector2.up) / (dir.magnitude * (-Vector2.up).magnitude))) <= 90 - direcDegle
                && Vector2.Dot(dir, -Vector2.up) >= minSwipeDot)
                return 1;
            return -1;
        }
    }
    

      

  • 相关阅读:
    与大神聊天1h
    《海上钢琴师》观后感
    《小王子》读书笔记
    Joining Data with dplyr in R
    SQL学习笔记1
    电影《受益人》观后感
    markdown文本编辑学习笔记2
    importing-cleaning-data-in-r-case-studies
    一个测试人员的工作该怎么开展
    测试总结报告
  • 原文地址:https://www.cnblogs.com/hersen/p/3946390.html
Copyright © 2011-2022 走看看