两个Scroll互相监听彼此的滑动-卡顿问题
①手指滑动 Scroll1
②触发 Scroll1 的 onScroll
③调用 scroller2.scrollBy 滑动 Scroll2
④触发 Scroll2 的 onScroll
⑤调用 scroller1.scrollBy 滑动 Scroll1
这里⑤又会触发②,会一直循环,导致爆栈,就是你上面发的报错 [Error message: Stack overflow!]
所以加个标记flag:
flag=true 代表手指在滑动 Scroll1,不用再用 scroller1.scrollBy 滑动 Scroll1 了;
flag=false 代表手指在滑动 Scroll2,不用再用 scroller2.scrollBy 滑动 Scroll2 了;
这个 flag 名字改为 isTouchScroll1OrScroll2 会更直观一点
scroller1: Scroller = new Scroller()
scroller2: Scroller = new Scroller()
flag = true
Scroll(this.scroller1) {}
.onTouch(() => this.flag = true)
.onScroll((x, y) => {
if (this.flag) this.scroller2.scrollBy(x, y)
})
Scroll(this.scroller2) {}
.onTouch(() => this.flag = false)
.onScroll((x, y) => {
if (!this.flag) this.scroller1.scrollBy(x, y)
})
完毕
来源:https://developer.huawei.com/consumer/cn/forum/topic/0202130590927173038?fid=0102683795438680754