Exemplo n.º 1
0
 IEnumerator ShowItem <T>(int defaultNum, List <T> dataGroup, bool isSync)
 {
     for (int i = 0; i < dataGroup.Count; i++)
     {
         if (i < (defaultNum))
         {
             BaseDragChild itemChild = GetBaseDragChildByDisableGroup();
             SetItemPos(itemChild, i);
             itemChild.Init(dataGroup[i]);
             itemChild.mDataIndex = i;
             SetItemShowEnable(itemChild.transform, true);
             mActiveDragChildGroup.Add(itemChild);
         }
         if (i == 0)
         {
             mUIScrollView.ResetPosition();
         }
         if (isSync)
         {
             yield return(null);
         }
         if (i == defaultNum)
         {
             mUIScrollView.ResetPosition();
         }
     }
 }
Exemplo n.º 2
0
    void SetItemPos(BaseDragChild dragChild, int itemDataIndex)
    {
        int posXindex = itemDataIndex % mWidthNum;
        int posYindex = itemDataIndex / mWidthNum;// +(posXindex > 0 ? 1 : 0);

        dragChild.transform.localPosition = new Vector3(posXindex * mPosWidth, -posYindex * mPosHeight);
        dragChild.mIndex = itemDataIndex;
    }
Exemplo n.º 3
0
    bool IsDisable(BaseDragChild dragChild, BaseDragChild centerChild, ref float distance)
    {
        bool  isDisable = false;
        float pos1      = IsHorizontal ? dragChild.mTran.localPosition.x : dragChild.mTran.localPosition.y;
        float pos2      = IsHorizontal ? centerChild.mTran.localPosition.x : centerChild.mTran.localPosition.y;

        distance = Mathf.Abs(Mathf.Abs(pos2) - Mathf.Abs(pos1));
        if (distance > DisableItemDis)
        {
            isDisable = true;
        }
        return(isDisable);
    }
Exemplo n.º 4
0
    bool IsActiveNew(BaseDragChild dragChild, BaseDragChild centerChild, GetItemType targetMoveType)
    {
        bool isActiveNew = false;

        if (dragChild != null && centerChild != null)
        {
            float pos1     = IsHorizontal ? dragChild.mTran.localPosition.x : dragChild.mTran.localPosition.y;
            float pos2     = IsHorizontal ? centerChild.mTran.localPosition.x : centerChild.mTran.localPosition.y;
            float distance = Mathf.Abs(Mathf.Abs(pos1) - Mathf.Abs(pos2));
            if (distance < TargetActiveItemDis(targetMoveType))
            {
                isActiveNew = true;
            }
        }
        return(isActiveNew);
    }
Exemplo n.º 5
0
    BaseDragChild getCenterPosChild()
    {
        float         minDis   = 999;
        BaseDragChild getChild = null;

        for (int i = 0; i < mActiveDragChildGroup.Count; i++)
        {
            var   child    = mActiveDragChildGroup[i];
            float pos1     = IsHorizontal ? child.mTran.localPosition.x : child.mTran.localPosition.y;
            float pos2     = IsHorizontal ? mUIScrollviewTran.localPosition.x : mUIScrollviewTran.localPosition.y;
            float distance = Mathf.Abs(Mathf.Abs(pos1) - Mathf.Abs(pos2));
            if (distance <= minDis)
            {
                minDis   = distance;
                getChild = child;
            }
        }
        return(getChild);
    }
Exemplo n.º 6
0
    void CheckMoveItem()
    {
        float         upPos      = -999999;
        float         downPos    = 99999;
        BaseDragChild upChild    = null;
        BaseDragChild downChild  = null;
        float         leftPos    = 999999;
        float         rightPos   = -99999;
        BaseDragChild leftChild  = null;
        BaseDragChild rightChild = null;

        BaseDragChild centerChild = getCenterPosChild();

        if (centerChild == null)
        {
            return;
        }
        for (int i = mActiveDragChildGroup.Count - 1; i >= 0; i--)
        {
            var   child     = mActiveDragChildGroup[i];
            float distance  = 0;
            bool  isDisable = IsDisable(child, centerChild, ref distance);
            if (isDisable)
            {
                mActiveDragChildGroup.RemoveAt(i);
                //child.gameObject.SetActive(false);
                SetItemShowEnable(child.transform, false);
                mDisableDragChildGroup.Enqueue(child);
            }
            float childPosY = child.mTran.position.y;
            float childPosX = child.mTran.position.x;
            if (!IsHorizontal)
            {
                if (childPosY > upPos)
                {
                    upPos   = childPosY;
                    upChild = child;
                }
                if (childPosY < downPos)
                {
                    downPos   = childPosY;
                    downChild = child;
                }
            }
            else
            {
                if (childPosX < leftPos)
                {
                    leftPos   = childPosX;
                    leftChild = child;
                }
                if (childPosX > rightPos)
                {
                    rightPos   = childPosX;
                    rightChild = child;
                }
            }
        }
        if (!IsHorizontal)
        {
            if (IsActiveNew(upChild, centerChild, GetItemType.Up))
            {
                OnMoveItem(GetItemType.Up);
            }
            if (IsActiveNew(downChild, centerChild, GetItemType.Down))
            {
                OnMoveItem(GetItemType.Down);
            }
        }
        else
        {
            if (IsActiveNew(leftChild, centerChild, GetItemType.Left))
            {
                OnMoveItem(GetItemType.Left);
            }
            if (IsActiveNew(rightChild, centerChild, GetItemType.Right))
            {
                OnMoveItem(GetItemType.Right);
            }
        }
    }