コード例 #1
0
        protected override void OnCCDragStart(PointerEventData eventData)
        {
            if (!m_EnableDrag)
            {
                return;
            }

            if (m_InDrag)
            {
                return;
            }

            base.OnCCDragStart(eventData);
            m_ScrollView.InDrag = true;
            m_ScrollView.SetGridEnable(false);
            CurMoveType  = DragMoveType.None;
            DragStartPos = eventData.position;

            startSiblingIndex = m_DragTrans.GetComponent <RectTransform> ().GetSiblingIndex();

            m_ScrollView.StopMove();
            if (!m_EnableMove && m_ScrollView != null)
            {
                m_ScrollView.OnDragStart(eventData);
            }
        }
コード例 #2
0
        protected override void OnCCDragMove(PointerEventData eventData)
        {
            if (!m_InDrag)
            {
                return;
            }

            if (!m_EnableMove && m_ScrollView != null)
            {
                m_ScrollView.OnDrag(eventData);
                return;
            }

            if (CurMoveType == DragMoveType.None)
            {
                CurMoveType = GetMoveType(DragStartPos, eventData.position);
                if (CurMoveType == m_ScrollView.DragType)
                {
                    base.OnButtonPress(false);
                    if (m_ScrollView != null)
                    {
                        m_ScrollView.OnDragStart(eventData);
                    }
                }
                else if (CurMoveType == m_DefaultDragType)
                {
                    m_DragTrans.SetSiblingIndex(1000);
                    m_DragTrans.SetParent(m_ScrollView.DragRootObj.transform);
                    m_DragTrans.position = CCTool.GetScreenToUIWorldPos(eventData.position);
                    OnStartDarg();
                }
            }
            else
            {
                if (CurMoveType == m_DefaultDragType)
                {
                    if (m_EnableSetPos)
                    {
                        m_DragTrans.position = CCTool.GetScreenToUIWorldPos(eventData.position);
                    }
                }
                else
                {
                    m_DragTrans.SetSiblingIndex(startSiblingIndex);
                    if (m_ScrollView != null)
                    {
                        m_ScrollView.OnDrag(eventData);
                    }
                }
            }
        }
コード例 #3
0
        protected DragMoveType GetMoveType(Vector2 start, Vector2 end)
        {
            if (m_DefaultDragType == DragMoveType.Both)
            {
                return(DragMoveType.Both);
            }

            Vector2 dis = end - start;

            if (Vector2.SqrMagnitude(dis) > MinOffset)
            {
                float        pAngel   = Mathf.Atan2(Mathf.Abs(dis.y), Mathf.Abs(dis.x)) * Mathf.Rad2Deg;
                DragMoveType dragType = (pAngel > MaxAngel) ? DragMoveType.Vertical : DragMoveType.Horizontal;
                return(dragType);
            }
            else
            {
                return(DragMoveType.None);
            }
        }
コード例 #4
0
 public void InitStatus()
 {
     m_InDrag    = false;
     CurMoveType = DragMoveType.Both;
 }