scrollview API问题

查看 scrollToOffset的API说明

!#en Scroll with an offset related to the ScrollView's top left origin, if timeInSecond is omitted, then it will jump to the specific offset immediately.
!#zh 视图内容在规定时间内将滚动到 ScrollView 相对左上角原点的偏移位置, 如果 timeInSecond参数不传,则立即滚动到指定偏移位置。

按这个说明,如果要向左滚动视图100,应该scrollToOffset(Vec2(-100, 0)),可是实际情况确实要scrollToOffset(Vec2(100, 0)),看内部代码滚动的值不应该小于0,那么这文档就有问题

可是当scrollToOffset(Vec2(100, 0))向左滚动了100后,再调用getScrollOffset获取滚动偏移时,返回的却是
Vec2(-100, 0)

向左滚动100后变成-100,有什么问题吗。。

这个是没问题!问题是向左滚动,scrollToOffset传参确是要Vec2(100, 0)

这2个 API配合使用就很容易出现问题
比如想向左移动100

let offset = scrollview.getScrollOffset();
offset += Vec2(100, 0);
scrollview.scrollToOffset(offset);

这样GG

这有什么问题吗?传(100,0),这个点是相对左上角原点的位置呀?将这个点移动到(0,0)的位置,不就是向左移动然后位移为100吗?

理解下两个值的区别,转换下就好了

api的原意不是"将这个点移动到(0,0)的位置",而是“滚动到 ScrollView 相对左上角原点的偏移位置”,那么向左移动,不应该是-100吗

按你这个理解,如果我要向上移动100,那岂不是要传Vec2(0, -100)

吐槽一下,这两个接口怎么看都像是一对的,传入的参数竟然和获取的结果不一致,还是希望能够把这两个api设计成一致的

参考: