分享一个自己实现的简单无限循环pageview

let onScrollCall = ()=>{

        if(check()) return;

        let curPageIdx = this.fzPageView.getCurrentPageIndex();

        let pages = this.fzPageView.getPages();

        if(curPageIdx == pages.length - 1){

            let curPage = pages[curPageIdx];

            let findPage = pages[0];

            this.fzPageView.removePageAtIndex(0);

            this.fzPageView.addPage(findPage);

            this.fzPageView.scrollToPage(curPageIdx - 1,0)

        }else if(curPageIdx == 0){

            let curPage = pages[0];

            let findPage = pages[pages.length - 1];

            this.fzPageView.removePageAtIndex(pages.length - 1);

            this.fzPageView.insertPage(findPage,0);

            // let n = new cc.Node()

            // this.fzPageView.addPage(n);

            this.fzPageView.content.getComponent(cc.Layout)._layoutDirty = true;

            this.fzPageView._updatePageView();

            this.fzPageView.scrollToPage(curPageIdx + 1,0)

            // this.fzPageView.removePage(n);

        }

    }

在将第一页添加到最后时没有什么问题, 移除第一页添加到最后一页即可,但是在将最后一页插入到第一页前时,插入时会有闪烁,断点运行后发现,在_updatePageView方法内,先执行了layout的updateLayout再根据实际x坐标设置了offset,此时插入页x坐标在最后,滑动会刷新坐标导致闪烁,我的解决方法是手动刷新一下,或者插入一个空节点触发pageview的刷新

1赞

因为功能要求是原节点所以这么写,如果不要求的话,使用预制体 插入第一页前可以先新增再删除,这样也不会闪烁