Esempio n. 1
0
    //初始化
    public void Init()
    {
        if (itemsLoop.Count < 3)
        {
            return;
        }

        //滑动
        gameObject.GetComponent <Image>().color = new Color(0, 0, 0, 1 / 255f);
        sizeDelta = GetComponent <RectTransform>().sizeDelta;
        GetComponent <RectTransform>().sizeDelta         = sizeDelta;
        EventTriggerListener.Get(gameObject).onDragStart = DragStart;
        EventTriggerListener.Get(gameObject).onDrag      = Dragging;
        EventTriggerListener.Get(gameObject).onEndDrag   = DragEnd;

        //位置
        for (int i = 0; i < cacheCount; i++)
        {
            Image ima = new GameObject("Item").AddComponent <Image>();
            ima.color = Color.white;
            ima.transform.SetParent(transform);
            ima.transform.localScale = Vector3.one;
            ima.GetComponent <RectTransform>().sizeDelta = sizeDelta;
            ima.transform.localPosition = new Vector3(-sizeDelta.x + sizeDelta.x * i, 0, 0);
            ItemLoop item = ima.gameObject.AddComponent <ItemLoop>();
            item.ima = ima;
            item.btn = item.gameObject.AddComponent <Button>();
            item.btn.onClick.AddListener(delegate()
            {
                ClickImage(item.gameObject);
            });

            loopImages.Add(item);
        }
        loopImages[0].ima.sprite = itemsLoop[itemsLoop.Count - 1];
        loopImages[1].ima.sprite = itemsLoop[0];
        loopImages[2].ima.sprite = itemsLoop[1];
        loopImages[0].imageIndex = itemsLoop.Count - 1;
        loopImages[1].imageIndex = 0;
        loopImages[2].imageIndex = 1;
    }
Esempio n. 2
0
    //点击图片
    void ClickImage(GameObject o)
    {
        ItemLoop item = o.GetComponent <ItemLoop>();

        Debug.Log(item.imageIndex);
    }
Esempio n. 3
0
    void Dragging(GameObject o)
    {
        Vector3 addPos = Input.mousePosition - curInputPos;

        curInputPos = Input.mousePosition;

        for (int i = 0; i < cacheCount; i++)
        {
            loopImages[i].transform.localPosition += new Vector3(addPos.x, 0, 0);
        }

        //最左边的越界就调到右边去
        float maxPosX        = sizeDelta.x * 1.5f;
        bool  needChangeLeft = loopImages[0].transform.localPosition.x < -maxPosX;

        if (needChangeLeft)
        {
            //记录
            curIndex++;
            if (curIndex > 2)
            {
                curIndex = 0;
            }
            //调位置
            loopImages[0].transform.localPosition = loopImages[2].transform.localPosition + new Vector3(sizeDelta.x, 0, 0);
            //刷新数据
            int index = loopImages[2].imageIndex + 1;
            if (index > itemsLoop.Count - 1)
            {
                index = 0;
            }
            loopImages[0].imageIndex = index;
            loopImages[0].ima.sprite = itemsLoop[index];
            Debug.Log(index);
            //调整List下标
            ItemLoop item0 = loopImages[0];
            ItemLoop item1 = loopImages[1];
            ItemLoop item2 = loopImages[2];
            loopImages[2] = item0;
            loopImages[1] = item2;
            loopImages[0] = item1;


            Debug.Log("curIndex = " + curIndex);
        }
        //最右边的越界就跳到左边去
        bool needChangeRight = loopImages[2].transform.localPosition.x > maxPosX;

        if (needChangeRight)
        {
            curIndex--;
            if (curIndex < 0)
            {
                curIndex = 2;
            }

            loopImages[2].transform.localPosition = loopImages[0].transform.localPosition - new Vector3(sizeDelta.x, 0, 0);

            int index = loopImages[0].imageIndex - 1;
            if (index < 0)
            {
                index = itemsLoop.Count - 1;
            }
            loopImages[2].imageIndex = index;
            loopImages[2].ima.sprite = itemsLoop[index];

            ItemLoop item0 = loopImages[0];
            ItemLoop item1 = loopImages[1];
            ItemLoop item2 = loopImages[2];
            loopImages[0] = item2;
            loopImages[1] = item0;
            loopImages[2] = item1;

            Debug.Log("curIndex = " + curIndex);
        }
    }