毋庸置疑,这就是目前最好的滚动组件+虚拟列表

依旧存在 :rofl:

嵌套滑动功能,还是有个细节需要处理,就是横向滑动的同时需要屏蔽纵向,反之亦然。假如不处理同时都在滑动就很乱,那些原生app都有处理

请问大佬,我在使用不等大小模式,用在聊天功能上,当切换聊天频道时,显示该频道的聊天数据,当数据多的时候就会倒是除非多次的滚动或者刷新,这是怎么回事呢

更新了。去重新拉下。

会怎么样 没看明白。

可以考虑多个vlist实例而不是一个vlist实例。

已修复 拉取最新仓库即可

1赞

大佬牛逼阿

用最新的demo,上滑是有明显的抖动,估计是首次高度计算的问题导致,

对的啊.但是…至少修复了是吧. 哈哈.

子节点的隐藏是不是有点问题?当我在最上面的时候,所有子节点都active=true了

什么问题 更详细点?

image

1.当前数据列表长度为16,按理来说,应该只会创建最多9个子项(额外缓冲为0)但实际创建了15个子项
2.在最顶部时,应该只显示9个子项,但实际15个子项都active=true了;但在最底部时,却又正确(只显示7个子项)

image

3.子项宽高计算没有考虑scale,VScrollViewItem的scale改变也没有考虑初始scale != 1.0的情况
4.为什么Sorting2D只对Label加呢?理想情况下,所有子项的节点结构都一样的话且在没有合图的情况下,利用上Sorting2D收益也不错?

第一点有内部缓冲,其余都不算问题 。你可以直接改或者让ai改,这个组件不是为了满足所有人的所有百分百需求,而只是满足大部分人的大部分最常用的需求。其它建议自己修改。

有试过让gpt5.4改,它改不对,哈哈 :sweat_smile:

mark,好东西

// 设置虚拟列表数据
if (this.vlist) {
  this.vlist.renderItemFn = (itemNode: cc.Node, index: number) => {
    console.warn("重复触发", index);
    const title = itemNode.getChildByName('title').getComponent(cc.Label);

    title!.string = this.data[index].data1;
  };

  this.vlist.onItemClickFn = (itemNode: cc.Node, index: number) => {
    const tip = this.node.getChildByName('tip').getComponent(cc.Label);
    tip.string = `你点击了第${index + 1}项,内容:${this.data[index].data1}`;
  };

  this.scheduleOnce(() => {
    this.vlist.refreshList(this.data);
  }, 1);
}

延时调用时会重复触发几次全量刷新, 注释掉这一行后才是符合预期的
this._layoutSlots(this._slotFirstIndex, true);
// this._updateVisible(true);

确实nb :+1:

(帖子被作者删除,如无标记将在 24 小时后自动删除)