public override void Initial(ModelElement mod)
        {
            model = mod;
            var scr = mod.Find("Scroll");

            scroll = new ScrollX();
            scroll.Initial(scr);
            var sli = mod.Find("Slider");

            slider = new UISlider();
            slider.Initial(sli);
            scroll.Scroll = (o, e) => {
                slider.Percentage = scroll.Pos;
                if (Scroll != null)
                {
                    Scroll(o, e);
                }
            };
            slider.OnValueChanged = (o) =>
            {
                scroll.Pos = slider.Percentage;
                if (OnValueChanged != null)
                {
                    OnValueChanged(o);
                }
            };
        }
Exemple #2
0
        static void CenterScroll(ScrollX scroll)
        {
            var   eve = scroll.eventCall;
            var   tar = scroll.eventCall.ScrollDistanceX;
            float v   = scroll.Point + tar;
            float sx  = scroll.ItemSize.x;
            float ox  = v % sx;

            tar -= ox;
            if (ox > sx * 0.5f)
            {
                tar += sx;
            }
            scroll.eventCall.ScrollDistanceX = tar;
            v = scroll.Point + tar + scroll.ScrollView.sizeDelta.x * 0.5f;
            int i = (int)(v / sx);
            int c = scroll.DataLength;

            i %= c;
            if (i < 0)
            {
                i += c - 1;
            }
            scroll.PreDockindex = i;
        }
Exemple #3
0
        public static ScrollX CreateSrollX(string name)
        {
            var mod    = CreateScroll(name);
            var scroll = new ScrollX();

            scroll.Initial(mod);
            return(scroll);
        }
Exemple #4
0
        static void CenterScroll(ScrollX scroll)
        {
            var   eve = scroll.eventCall;
            var   tar = scroll.eventCall.ScrollDistanceX;
            float tx  = scroll.Size.x * 0.5f;
            float v   = scroll.Point + tar + tx;
            float sx  = scroll.ItemSize.x;
            float ox  = v % sx;

            tar -= ox;
            if (ox > sx * 0.5f)
            {
                tar += sx;
            }
            tar += sx * 0.5f;
            scroll.eventCall.ScrollDistanceX = tar;
        }
Exemple #5
0
        public static void CenterScrollByIndex(ScrollX scroll, int index)
        {
            var   eve = scroll.eventCall;
            var   d   = scroll.eventCall.ScrollDistanceX; //滚动距离
            float tx  = scroll.Size.x * 0.5f;             //滚动框中心
            float tar = d - scroll.Point + d;             //目标地址
            float sx  = scroll.ItemSize.x;

            if (tar % sx < -sx * 0.5f)
            {
                index--;
            }
            float offset = (tx - sx * 0.5f) % sx;
            float qt     = -index * sx + offset;

            d = qt - scroll.Point;
            scroll.eventCall.ScrollDistanceX = -d;
        }