コード例 #1
0
        public void OnSelect(ILoopSelectStyle loopSelectStyle) //选中
        {
            if (m_SelecteStyle != null)
            {
                m_SelecteStyle.CancelStyle();
            }
            var loopItem = loopSelectStyle.loopItem;

            m_SelecteStyle      = loopSelectStyle;
            m_LastSelectedIndex = m_SelectedIndex;
            m_SelectedIndex     = loopItem.index;
            loopSelectStyle.SelectedStyle();
            if (onSelected != null)
            {
                onSelected(this.parameter, loopItem.item, m_SelectedIndex, m_LastSelectedIndex);
            }
            object para = null;

            if (itemParameter == null)
            {
                para = loopItem.item;
            }
            else
            {
                para = itemParameter;
            }
            if (itemCommand != null && itemCommand.CanExecute(para))
            {
                itemCommand.Execute(para);
            }
        }
コード例 #2
0
        protected void RenderItem(LoopVerticalItem loopItem, int idx)
        {
            var oldRect = loopItem.rect;
            var oldIdx  = loopItem.index;

            if (idx < dataLength)
            {
                var templateId = 0;
                if (onGetItemTemplateType != null)
                {
                    templateId = onGetItemTemplateType(this.parameter, idx);
                }
                var item = OnCreateOrGetItem(idx, templateId, loopItem, content); //
                // item.name = string.Format("item {0} {1}", idx, templateId);

                // Debug.LogFormat("RenderItem oldIdx={0},item={1},loopItem={2},idx={3},templateId={4} ", oldIdx, item, loopItem.item, idx, templateId);

                var rent = item.GetComponent <RectTransform>();
                loopItem.transform = rent;
                loopItem.item      = item;
                loopItem.index     = idx;
            }


            var gObj = loopItem?.item.gameObject;

            if (idx >= dataLength)
            {
                // CalcBounds (loopItem, oldIdx, oldRect); //删除时候需要计算bounds
                if (gObj)
                {
                    gObj.SetActive(false);
                }
                loopItem.index = -1;
                return;
            }
            else if (!gObj.activeSelf)
            {
                gObj.SetActive(true);
            }

            //keep selected
            if (m_SelecteStyle != null)
            {
                if (m_SelecteStyle.loopItem.index == m_SelectedIndex)
                {
                    m_SelecteStyle.SelectedStyle();
                }
                else if (m_SelecteStyle.loopItem == loopItem)
                {
                    m_SelecteStyle.CancelStyle();
                }
            }

            AddShowList(idx);
            onItemRender(this.parameter, loopItem.item, loopItem.index); //填充内容
            //
            CalcItemBound(loopItem);
            // CalcBounds (loopItem, oldIdx, oldRect);
        }
コード例 #3
0
        public void OnSelect(ILoopSelectStyle loopSelectStyle)  //选中
        {
            if (m_SelecteStyle != null)
            {
                m_SelecteStyle.CancelStyle();
            }
            var loopItem = loopSelectStyle.loopItem;

            m_SelecteStyle = loopSelectStyle;
            loopSelectStyle.SelectedStyle();
            int lastIdx = m_SelectedIndex;

            m_SelectedIndex = loopItem.index;
            if (onSelected != null)
            {
                onSelected(this.parameter, loopItem.item, loopItem.index, lastIdx);
            }
            if (itemCommand != null && itemCommand.CanExecute(new int[] { loopItem.index, lastIdx }))
            {
                itemCommand.Execute(new int[] { loopItem.index, lastIdx });
            }
        }
コード例 #4
0
        protected void RenderItem(LoopItem loopItem, int idx)
        {
            bool dispatchOnSelectedEvent = false;
            var  oldRect = loopItem.rect;
            var  oldIdx  = loopItem.index;

            loopItem.index = idx;
            // Debug.LogFormat ("RenderItem({1},{0})", loopItem.item, idx);
            if (loopItem.item == null && onGetItem == null)
            {
                var trans = itemSource.GetComponent <RectTransform>();
                var item  = GameObject.Instantiate(itemSource, trans.position, trans.rotation, content);
                loopItem.item      = item;
                loopItem.transform = item.GetComponent <RectTransform>();
                if (onInstantiated != null)
                {
                    onInstantiated(this.parameter, loopItem.item, loopItem.index);
                }

                dispatchOnSelectedEvent = InitItemStyle(loopItem);
            }

            if (onGetItem != null)
            {
                var item = onGetItem(this.parameter, idx, loopItem.item, oldIdx, content); //
                var rent = item.GetComponent <RectTransform>();
                if (rent.parent == null)
                {
                    rent.SetParent(content);
                    rent.rotation   = Quaternion.Euler(0, 0, 0);
                    rent.localScale = Vector3.one;
                    Vector3 newPos = Vector3.zero;
                    newPos.x = halfPadding;
                    rent.anchoredPosition = newPos;
                }
                loopItem.transform = rent;
                loopItem.item      = item;

                dispatchOnSelectedEvent = InitItemStyle(loopItem);
            }

            var gObj = loopItem.item.gameObject;

            if (idx >= dataLength)
            {
                gObj.SetActive(false);
                return;
            }
            else if (!gObj.activeSelf)
            {
                gObj.SetActive(true);
            }

            //keep selected
            if (m_SelecteStyle != null)
            {
                if (m_SelecteStyle.loopItem.index == m_SelectedIndex)
                {
                    m_SelecteStyle.SelectedStyle();
                }
                else if (m_SelecteStyle.loopItem == loopItem)
                {
                    m_SelecteStyle.CancelStyle();
                }
            }

            onItemRender(this.parameter, loopItem.item, loopItem.index); //填充内容
            LayOut(loopItem);

            if (dispatchOnSelectedEvent)
            {
                OnSelect(m_SelecteStyle);
            }
        }
コード例 #5
0
        protected void RenderItem(LoopVerticalItem loopItem, int idx)
        {
            var oldRect = loopItem.rect;
            var oldIdx  = loopItem.index;

            if (idx < dataLength)
            {
                var templateId = 0;
                if (onGetItemTemplateType != null)
                {
                    templateId = onGetItemTemplateType(this.parameter, idx);
                }

                var item = OnCreateOrGetItem(idx, templateId, loopItem, content);  //
                item.name = string.Format("item {0} {1}", idx, templateId);
                var rent = item.GetComponent <RectTransform> ();
                // if (rent.parent == null) {
                //     rent.SetParent (content);
                //     rent.rotation = Quaternion.Euler (0, 0, 0);
                //     rent.localScale = Vector3.one;
                //     // Vector3 newPos = Vector3.zero;
                //     // newPos.x = halfPadding;
                //     // rent.anchoredPosition = newPos;
                // }
                loopItem.transform = rent;
                loopItem.item      = item;
                loopItem.index     = idx;
            }

            var gObj = loopItem?.item.gameObject;

            if (idx >= dataLength)
            {
                // CalcBounds (loopItem, oldIdx, oldRect); //删除时候需要计算bounds
                if (gObj)
                {
                    gObj.SetActive(false);
                }
                return;
            }
            else if (!gObj.activeSelf)
            {
                gObj.SetActive(true);
            }

            //keep selected
            if (m_SelecteStyle != null)
            {
                if (m_SelecteStyle.loopItem.index == m_SelectedIndex)
                {
                    m_SelecteStyle.SelectedStyle();
                }
                else if (m_SelecteStyle.loopItem == loopItem)
                {
                    m_SelecteStyle.CancelStyle();
                }
            }

            AddShowList(idx);
            onItemRender(this.parameter, loopItem.item, loopItem.index);  //填充内容
            //
            CalcItemBound(loopItem);
            // CalcBounds (loopItem, oldIdx, oldRect);
        }