コード例 #1
0
    private void CalculateData()
    {
        List <ItemData> itemDatas = new List <ItemData>();

        //椭圆的周长计算
        float length = (ItemSize.x + Offset) * _items.Count;
        //每个sprite之间的比例差值
        float ratioOffset = 1 / (float)_items.Count;

        for (int i = 0; i < _items.Count; i++)
        {
            ItemData itemData = new ItemData();
            itemData.PosId = i;
            itemDatas.Add(itemData);

            _items[i].PosId = i;

            ItemPosData data = new ItemPosData();
            data.X          = GetX(ratioOffset * i, length);
            data.ScaleTimes = GetScaleTimes(ratioOffset * i, ScaleTimesMax, ScaleTimesMin);
            _posData.Add(data);
        }

        itemDatas = itemDatas.OrderBy(item => _posData[item.PosId].ScaleTimes).ToList();

        for (int i = 0; i < itemDatas.Count; i++)
        {
            itemDatas[i].OrderId = i + 1;
            _posData[itemDatas[i].PosId].Order = i;
        }
    }
コード例 #2
0
    private void CalulateData()
    {
        List <ItemData> itemDatas = new List <ItemData>();

        float length      = (ItemSize.x + Offset) * _items.Count;
        float radioOffset = 1 / (float)_items.Count;

        float radio = 0;

        for (int i = 0; i < _items.Count; i++)
        {
            ItemData itemData = new ItemData();
            itemData.PosId = i;
            itemDatas.Add(itemData);

            _items[i].PosId = i;

            ItemPosData data = new ItemPosData();
            data.X          = GetX(radio, length);
            data.ScaleTimes = GetScaleTimes(radio, ScaleTimesMax, ScaleTimesMin);

            radio += radioOffset;
            _posData.Add(data);
        }

        itemDatas = itemDatas.OrderBy(u => _posData[u.PosId].ScaleTimes).ToList();

        for (int i = 0; i < itemDatas.Count; i++)
        {
            _posData[itemDatas[i].PosId].Order = i;
        }
    }
コード例 #3
0
    private void CalculateData()
    {
        List <ItemData> itemDatas = new List <ItemData>();

        float length      = (ItemSize.x + itemOffset) * _itemList.Count;
        float ratioOffset = 1.0f / (float)_itemList.Count;
        float ratio       = 0f;

        for (int i = 0; i < _itemList.Count; i++)
        {
            ItemData itemData = new ItemData();
            itemData.PosId     = i;
            _itemList[i].posId = i;
            itemDatas.Add(itemData);

            ItemPosData itemPosData = new ItemPosData();
            itemPosData.X          = GetX(ratio, length);
            itemPosData.ScaleTimes = GetScaleTimes(ratio, maxSize, minSize);
            ratio += ratioOffset;
            _posDataList.Add(itemPosData);
        }
        itemDatas = itemDatas.OrderBy(n => _posDataList[n.PosId].ScaleTimes).ToList();//ascending the order by scale times
        for (int i = 0; i < itemDatas.Count; i++)
        {
            _posDataList[itemDatas[i].PosId].Order = i;
        }
    }
コード例 #4
0
    public void SetPosData(ItemPosData data)
    {
        Rect.DOAnchorPos(Vector2.right * data.X, _aniTime);
        Rect.DOScale(Vector3.one * data.ScaleTimes, _aniTime);

        StartCoroutine(Wait(data));
    }
コード例 #5
0
 /// <summary>
 /// 对某个子项进行位置信息赋值,以确定其显示位置X轴、缩放、层级
 /// </summary>
 /// <param name="data">包含X轴、缩放和层级的数据</param>
 public void SetPosData(ItemPosData data)
 {
     Rect.DOAnchorPos(Vector2.right * data.X, _animTime);
     Rect.DOScale(data.ScaleTimes, _animTime);
     //Rect.anchoredPosition = Vector2.right * data.X;
     //Rect.localScale = Vector3.one * data.ScaleTimes;
     //transform.SetSiblingIndex(data.Order);
     StartCoroutine(Wait(data)); //延迟改变层级
 }
コード例 #6
0
    public void SetPosData(ItemPosData data)
    {
        Rect.DOAnchorPos(Vector2.right * data.X, _aniTime);
        Rect.DOScale(Vector3.one * data.ScaleTimes, _aniTime);
        //Rect.anchoredPosition = Vector2.right * data.X;
        //Rect.localScale = Vector3.one * data.ScaleTimes;

        StartCoroutine(Wait(data));
    }
コード例 #7
0
 public void SetSelfData(ItemPosData itemPosData)
 {
     rect.DOAnchorPos(Vector2.right * itemPosData.X, _animTime);
     rect.DOScale(Vector3.one * itemPosData.ScaleTimes, _animTime);
     //rect.anchoredPosition = Vector2.right * itemPosData.X;
     //rect.localScale = Vector3.one*itemPosData.ScaleTimes;
     //transform.SetSiblingIndex(itemPosData.Order);
     StartCoroutine(DelayChangeImgOrder(itemPosData));
 }
コード例 #8
0
    IEnumerator Wait(ItemPosData data)
    {
        yield return(new WaitForSeconds(_animTime * 0.3f));

        transform.SetSiblingIndex(data.Order);
    }
コード例 #9
0
    private IEnumerator DelayChangeImgOrder(ItemPosData data)
    {
        yield return(new WaitForSeconds(_animTime * 0.3f));

        transform.SetSiblingIndex(data.Order);
    }