2.4.3版本
大佬可以略过哈,小白可以参考一下
由于项目需求,需要弄一个界面拨动切换,于是在论坛找一下有没有什么例子!
网上大部分的实现逻辑是:
建立三个page:page_1、page_2、page_3;初始定位到page_2;
当滑动到page_1时,删除page_3,新建一页插入到最前面,然后定位到page_2;
当滑动到page_3时,删除page_1,新建一页插入到最后面,然后定位到page_2。
我按这个思路做的时候会发现有点问题
1.新插入的page不响应,且删除添加的时候会出现闪屏的问题
于是我自己改了一下思路
建立三个page:page_1、page_2、page_3;初始定位到page_2;
当滑动到page_1时,立即移动位置到page_2且刷新全部page全部内容;
当滑动到page_3时,同上
这样实现避免了删除插入出现的闪屏和新插入的page不响应问题
核心代码如下:(我为了滑动丝滑一点就创建五个page了哈!)
for (let index = 0; index < 5; index++) {
let obj = cc.instantiate(this.pageNode)
obj.width = this.page.node.width
this.page.insertPage(obj, index)
}
//计算中心位置
let list = this.page.getPages()
if (list.length > 0) {
let width = list[0].width
this._centerX = list.length / 2 * width
}
//中心index的数值
let pageIndex = Math.floor(list.length / 2)
//注册事件
this.page.node.on("scroll-ended", () => {
// cc.log("测试滑动", this.page.getCurrentPageIndex())
if (this.page.getCurrentPageIndex() <= pageIndex - 1) {
this.page.content.setPosition(-this._centerX, 0)
this.page.setCurrentPageIndex(pageIndex)
} else if (this.page.getCurrentPageIndex() >= pageIndex + 1) {
this.page.content.setPosition(-this._centerX, 0)
this.page.setCurrentPageIndex(pageIndex)
}
})
效果图如下

