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); } }; }
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; }
public static ScrollX CreateSrollX(string name) { var mod = CreateScroll(name); var scroll = new ScrollX(); scroll.Initial(mod); return(scroll); }
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; }
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; }