示例#1
0
 public static void Init(Transform root)
 {
     if (isInited == false)
     {
         isInited   = true;
         tipType    = -1;
         _container = root.Find("Container");
         _recycle   = root.Find("Recycle");
         //alertObj.localPosition = Vector3.zero;
         offset = new Vector2(25, -25);
         UILoopManager.AddToFrame(loopKey, OnEnterFrame);
     }
 }
示例#2
0
        public void SetDataProvider <T>(IEnumerable <T> value)
        {
            if (_itemRender == null)
            {
                Debug.LogError("set itemRender first!");
                return;
            }
            if (_itemPool == null)
            {
                _itemPool = new List <CItemRender>();
            }
            if (_allItem == null)
            {
                _allItem = new List <CItemRender>();
            }
            SetData <T>(value);
            //_dataProvider = (value ?? new List<T>()) as List<object>;

            bool        isEnough = _allItem.Count >= _dataProvider.Count;
            int         n        = Mathf.Abs(_allItem.Count - _dataProvider.Count);
            CItemRender item;

            while (n > 0)
            {
                if (isEnough == true)
                {
                    item = _allItem[_allItem.Count - 1];
                    _itemPool.Add(item);
                    _allItem.RemoveAt(_allItem.Count - 1);
                    item.SetParent(recycle);
                    item.tran.localPosition = Vector3.zero;
                    item.SetActive(false);
                }
                else
                {
                    if (_itemPool.Count > 0)
                    {
                        item = _itemPool[0];
                        _itemPool.RemoveAt(0);
                        item.SetActive(true);
                    }
                    else
                    {
                        item = (CItemRender)Activator.CreateInstance(_itemRender);
                    }
                    item.SetParent(transform);
                    _allItem.Add(item);
                }
                n--;
            }
            ResetItems();
            lastDataProvider = value;
            if (_allItem.Count > 0)
            {
                if (alwaysMove || _allItem.Count * itemWidth > (content.baseClipRegion.z))
                {
                    UILoopManager.AddToFrame(this, OnLoop);
                }
                else
                {
                    UILoopManager.RemoveFromFrame(this);
                }
            }
            else
            {
                UILoopManager.RemoveFromFrame(this);
            }
        }
示例#3
0
 public void RollTo(float target, int time = 20)
 {
     targetValue = target;
     rollSpeed   = (target - value) / time;
     UILoopManager.AddToFrame(this, OnMove);
 }