Ejemplo n.º 1
0
        private void CalculatOffset(LegoScrollViewMeta svMeta)
        {
            switch (Arrangement)
            {
            case YuArrangement.Horizontal:
                break;

            case YuArrangement.Vertical:
                xOffset = svMeta.Xoffset;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public static LegoScrollViewMeta Create(YuLegoScrollView legoScrollView)
        {
            var scHelper = legoScrollView.GetComponent <YuLegoScrollViewHelper>();

            if (scHelper == null)
            {
                throw new Exception($"滚动视图{legoScrollView.Name}上没有发现滚动视图开发助手组件!");
            }

            var meta = new LegoScrollViewMeta
            {
                Id                    = legoScrollView.Name,
                Arrangement           = legoScrollView.Arrangement,
                ItemWidth             = scHelper.IitemWidth,
                ItemHeight            = scHelper.ItemHeight,
                IsHorizontal          = scHelper.IsHorizontal,
                HorizontalEnable      = scHelper.HorizontalEnable,
                VerticalEnable        = scHelper.VerticalEnable,
                IsMultiLayout         = scHelper.IsMulti,
                MaxPerLine            = scHelper.MaxPerLine,
                Xoffset               = scHelper.Xoffset,
                IsNotInitSonComponent = scHelper.IsNotInitSonComponent,
                HorizontalPadiding    = scHelper.Horizontalpadiding,
                VerticalPadiding      = scHelper.VerticalPadiding,
                ScrollViewImageMeta   = LegoImageMeta
                                        .Create(legoScrollView.RectTransform.GetComponent <YuLegoImage>())
            };

            var scrollRect = legoScrollView.RectTransform.Find("ScrollRect").RectTransform();

            meta.ScrollRectRectMeta  = LegoRectTransformMeta.Create(scrollRect);
            meta.ScrollRectImageMeta = LegoImageMeta.Create(scrollRect.GetComponent <YuLegoImage>());

            var content = scrollRect.Find("Content").RectTransform();

            meta.ContentRectMeta = LegoRectTransformMeta.Create(content);

            return(meta);
        }
Ejemplo n.º 3
0
        public void Metamorphose(LegoUIMeta uiMeta)
        {
            if (MetamorphoseStage == LegoMetamorphoseStage.Completed)
            {
                MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing;
            }

            if (scrollViewMeta == null)
            {
                scrollViewMeta = uiMeta.NextScrollView;
                RectMeta       = uiMeta.CurrentRect;
            }

            switch (metamorphoseStatus)
            {
            case MetamorphoseStatus.ScrollView:
                YuLegoUtility.MetamorphoseRect(RectTransform, RectMeta);
                ScrollViewImage.Metamorphose(scrollViewMeta.ScrollViewImageMeta);
                metamorphoseStatus = MetamorphoseStatus.ScrollRect;
                break;

            case MetamorphoseStatus.ScrollRect:
                YuLegoUtility.MetamorphoseRect(ScrollRectRect, scrollViewMeta.ScrollRectRectMeta);
                ScrollRectImage.Metamorphose(scrollViewMeta.ScrollRectImageMeta);
                metamorphoseStatus = MetamorphoseStatus.Content;
                break;

            case MetamorphoseStatus.Content:
                YuLegoUtility.MetamorphoseRect(Content, scrollViewMeta.ContentRectMeta);
                scrollViewMeta     = null;
                metamorphoseStatus = MetamorphoseStatus.ScrollView;
                MetamorphoseStage  = LegoMetamorphoseStage.Completed;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Ejemplo n.º 4
0
        private void InitMetaInfo(LegoScrollViewMeta svMeta)
        {
            isMultiLayout = svMeta.IsMultiLayout;
            maxPerLine    = svMeta.MaxPerLine;

            Arrangement = svMeta.IsHorizontal ?
                          YuArrangement.Horizontal :
                          YuArrangement.Vertical;

            itemWidth  = svMeta.ItemWidth;
            itemHeight = svMeta.ItemHeight;

            horizontalPadiding = svMeta.HorizontalPadiding;
            verticalPadiding   = svMeta.VerticalPadiding;

            switch (Arrangement)
            {
            case YuArrangement.Horizontal:
                loopRequireNum = isMultiLayout
                        ? ((int)(ScrollRectRect.sizeDelta.x / (itemWidth + horizontalPadiding)) + 2) * maxPerLine
                        : ((int)(ScrollRectRect.sizeDelta.x / (itemWidth + horizontalPadiding)) + 2);
                break;

            case YuArrangement.Vertical:
                minVisibleLine = (int)(Content.sizeDelta.y / (itemHeight + verticalPadiding));
                var minLine = minVisibleLine + 2;
                loopRequireNum = minLine * maxPerLine;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            CalculatOffset(svMeta);

            isCalculated = true;
        }
Ejemplo n.º 5
0
        private void AddScrollViewMeta(Transform transform)
        {
            var scrollViewMeta = LegoScrollViewMeta.Create(transform.GetComponent <YuLegoScrollView>());

            ScrollViewMetas.Add(scrollViewMeta);
        }