Beispiel #1
0
    public void Move(int p = 0)
    {
        if (Global.MUSIC_TABLE.Count == 0)
        {
            return;
        }
        selectIndex += p;
        direction    = p;

        if (selectIndex < 0)
        {
            selectIndex = 0;
        }
        else if (cards != null && selectIndex >= dataList.Count)
        {
            selectIndex = dataList.Count - 1;
        }
        songCount.text = (selectIndex + 1) + "/" + Global.MUSIC_TABLE.Count;
        LoadCover();
        reach = REACH_STATE.NONE;
    }
Beispiel #2
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (cards == null || cards.Count == 0 || !initComplete || !isScroll)
        {
            return;
        }

        if (selectIndex < 0)
        {
            selectIndex = 0;
        }
        else if (selectIndex >= dataList.Count)
        {
            selectIndex = dataList.Count - 1;
        }

        float   ty   = -cards[0].index * cardHeight;
        float   tx   = -cards[0].index * xOffset;
        Vector3 temp = Vector3.one;

        float selectedY = 0;
        float selectedX = 0;

        for (int i = 0; i < cards.Count; i++)
        {
            SongCard go = cards[i];
            if (go.resetPositionNow)
            {
                temp.Set(tx, ty, 0);
                go.transform.localPosition = temp;
                go.resetPositionNow        = false;
            }
            else
            {
                temp.Set(tx, go.gameObject.transform.localPosition.y + (ty - go.gameObject.transform.localPosition.y) * speed, 0);
                go.transform.localPosition = temp;
            }

            go.SetHover(go.index == selectIndex);
            if (reach == REACH_STATE.NONE && Mathf.Abs(ty - go.gameObject.transform.localPosition.y) < 0.1f)
            {
                reach = REACH_STATE.REACH;
            }

            float targetS = 1;
            if (go.index == selectIndex)
            {
                curCard   = go;
                selectedX = go.transform.localPosition.x;
                selectedY = go.transform.localPosition.y;
                targetS   = 1.25f;
                ty       -= oneOffset;
            }
            else if (go.index == (selectIndex - 1))
            {
                ty     -= oneOffset * 1.2f;
                targetS = 1.1f;
            }
            else if (go.index == (selectIndex + 1))
            {
                targetS = 1.1f;
                ty     -= oneOffset * 0.5f;
            }
            else if (i == (selectIndex - 2))
            {
                ty -= oneOffset * 0.5f;
            }
            temp.Set(go.transform.localScale.x + (targetS - go.transform.localScale.x) * speed, go.transform.localScale.y + (targetS - go.transform.localScale.y) * speed, 1);
            go.transform.localScale = temp;

            ty -= (i == selectIndex ? hoverH : normalH) - yOffset;
            tx -= xOffset;
        }


        if (reach == REACH_STATE.REACH)
        {
            SongCard g;
            if (direction < 0)
            {
                //向上加
                if (cards[0].index > 0)
                {
                    g = cards[cards.Count - 1];
                    if (selectIndex <= (dataList.Count - upDownLeave - 1))
                    {
                        g.SetData(dataList[cards[0].index - 1]);
                        g.resetPositionNow = true;
                        cards.RemoveAt(cards.Count - 1);
                        cards.Insert(0, g);
                    }
                }
            }
            else if (direction > 0)
            {
                if ((cards[cards.Count - 1].index + 1) < dataList.Count)
                {
                    g = cards[0];
                    if (selectIndex >= upDownLeave)
                    {
                        SongCard sc       = cards[cards.Count - 1];
                        SongData nextData = dataList[sc.data.index + 1];
                        g.SetData(nextData);
                        g.resetPositionNow = true;
                        cards.RemoveAt(0);
                        cards.Add(g);
                    }
                }
            }
            reach = REACH_STATE.DONE;
        }

        temp.Set(transform.localPosition.x + (bornPos.x - selectedX - transform.localPosition.x) * speed, transform.localPosition.y + (-selectedY + hight - transform.localPosition.y) * speed, 0);
        transform.localPosition = temp;

        if (firstTime)
        {
            speed     = .3f;
            firstTime = false;
        }
    }