protected virtual void Drag(PointerEventData eventData)
        {
            if (m_CurStatus == HeroItemStatus.NoOperations)
            {
                if (m_PreEventDataPos != Vector2.zero)
                {
                    Vector2 relative = eventData.position - m_PreEventDataPos;
                    if (Mathf.Abs(relative.x) >= Mathf.Abs(relative.y))
                    {
                        m_NextStatus = HeroItemStatus.DragView;
                    }
                    else
                    {
                        m_NextStatus = HeroItemStatus.DragItem;
                    }
                }
            }

            if (m_CurStatus == HeroItemStatus.DragItem)
            {
                if (UpdateDragHeroEvent != null)
                {
                    UpdateDragHeroEvent(eventData.position);
                }
            }
            m_PreEventDataPos = eventData.position;
        }
 protected virtual void PointerExit(PointerEventData eventData)
 {
     m_Enter = false;
     if (m_CurStatus == HeroItemStatus.ShowIntro)
     {
         m_NextStatus = HeroItemStatus.HideIntro;
     }
 }
 protected virtual void EnterDragViewStatus()
 {
     if (HideHeroInfoEvent != null)
     {
         HideHeroInfoEvent();
     }
     m_NextStatus = HeroItemStatus.NoOperations;
 }
 protected virtual void EndDrag(PointerEventData eventData)
 {
     if (m_CurStatus == HeroItemStatus.DragItem)
     {
         if (GoFightEvent != null)
         {
             GoFightEvent(m_RoleId, eventData.position);
         }
     }
     else if (m_CurStatus == HeroItemStatus.DragView)
     {
         m_NextStatus = HeroItemStatus.NoOperations;
     }
 }
        private void Update()
        {
            if (m_NextStatus != HeroItemStatus.None)
            {
                m_CurStatus  = m_NextStatus;
                m_NextStatus = HeroItemStatus.None;
                switch (m_CurStatus)
                {
                case HeroItemStatus.NoOperations:
                    EnterNoOperationsStatus();
                    break;

                case HeroItemStatus.DragView:
                    EnterDragViewStatus();
                    break;

                case HeroItemStatus.DragItem:
                    EnterDragItemStatus();
                    break;

                case HeroItemStatus.ShowIntro:
                    EnterShowIntroStatus();
                    break;

                case HeroItemStatus.HideIntro:
                    EneterHideIntroStatus();
                    break;

                case HeroItemStatus.Empty:
                    EnterEmptyStatus();
                    break;
                }
            }
            if (m_CurStatus == HeroItemStatus.NoOperations)
            {
                if (m_Enter)
                {
                    m_PointDownTimer += Time.deltaTime;
                    if (m_PointDownTimer > 1.5f)
                    {
                        m_NextStatus = HeroItemStatus.ShowIntro;
                    }
                }
            }
        }
 protected virtual void EneterHideIntroStatus()
 {
     m_NextStatus = HeroItemStatus.NoOperations;
     UIDispatcher.Instance.Dispatc(ConstDefine.Hero_HideHeroIntro, null);
 }