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); } }
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); } } } }
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); } }
public void InitStatus() { m_InDrag = false; CurMoveType = DragMoveType.Both; }