常州企业做网站,龙泉驿网站seo,深圳市福田建设局网站,wd ex4 安装wordpress前言进入公众号回复listview即可获得demo的git地址。之前写的一篇文章《Creator之ScrollView那些事》中提到了官方Demo中提供的ListViewCtl,只是实现了纵向滑动#xff0c;没有实现横向滑动。并且建议官方可以把功能做全然后放入组件库中供开发者使用。然后有个牛逼大神说这个… 前言进入公众号回复listview即可获得demo的git地址。之前写的一篇文章《Creator之ScrollView那些事》中提到了官方Demo中提供的ListViewCtl,只是实现了纵向滑动没有实现横向滑动。并且建议官方可以把功能做全然后放入组件库中供开发者使用。然后有个牛逼大神说这个ListView不ok。要我对自己的公众号内容负责。我还以为有什么严重的bug其实是打断了合批操作。对于官方提供的ListViewCtr的操作方式肯定会打断合批的 !不过对于一些简单的需求比如我上次文章中的这个截图。这样的列表需要合批吗我的需求就是少创建几个节点就可以了。所以我觉得ok不ok还是要看需求吧为什么tableview呼声那么高而Laya也在官方组件中支持了ListView已经是很好的说明了。ListView的局限首先这个ListView是有局限的它直接将Item放入了content中肯定会打断合批操作如果你有一个多列多行并且item非常复杂的需求那么用这个ListView肯定是不合适的。就好比你用一把杀鸡的刀去杀一头牛不悲剧才怪所以大家在看到别人分享东西的时候建议最好不要拿来主义而是经过分析后决定用还是不用我相信作为程序猿这点判断能力还是有的其次 这个ListView不支持网格显示。如果想要多行或者多列显示需要自己在一个Item中排列好。然后自己设置每个道具的显示与隐藏所以对于有多列显示需求的情况还是比较复杂的。那么我先说说ListView采用的原理然后再说说如何改进吧。ListView采用的原理根据可显示区域的宽或者高计算出需要创建的道具的数量。然后多加一行或者一列避免滑动的时候显示不自然。滑动时将离开可见区域的道具放到与滑动方向相反的一端重复使用。原理其实就这么两点目的就是少创建节点。支持网格显示的ListView——GridListView首先我为之前的ListView增加了网格显示能力代码中通过给定的spaceX和spaceY 结合可显示区域的宽或者高计算可显示的列数或者行数如果只是做了网格显示能力而不做分层管理其实一样有局限1。虽然比你直接把道具放入content中好很多但是dc依然很高。支持分层管理的ListView——GridLayerListViewGridLayerListView 是继承了GridListView重写了设置坐标和添加节点的方法。这里的item依然被添加到了content中只是此时的它已经没有子节点了只是用来判断是否离开显示区域而存在的。同时在添加item的时候给item自定义了一个LIST属性用于保存子节点的引用因为已经不能通过item的children数组获得子节点了。为每个子节点自定义一个属性INIT_POS保存本地坐标更新位置的时候会用到。为了保证所有节点显示位置的正确性代码中直接移除节点中存在的widget组件。当你将一个ScrollView拖到界面上时只需要调整ScrollView和view的宽高代码中直接删除了默认的item节点GridLayerListView并没有使用对象池如果确实有需要可以在getItem函数中自己通过对象池获取道具。通过设置ScrollView的Horizontal 和 Vertical 改变滚动方向同时只支持一个方向滚动。使用方式将一个ScrollView拖到界面中挂上GridLayerListView组件定义一个处理逻辑的组件挂到界面上并在逻辑组件中声明好使用的变量和函数设置好GridLayerListView的参数。(其实跟ListViiew的使用方式是一样的)设置ScrollView 和View 的宽高注意尤其是View的宽高因为View大小就是可见区域代码中会根据View的宽高判断应该显示的列数或者行数。注意列数或者行数等于宽度或者高度/(item的宽度或者高度横向间距或者纵向间距)使用效果为了看优化的效果用到的两个纹理都去掉了Packable选项不分层的GridListView dc64在不分层管理的情况下道具中的label是否设置为Char模式dc都是一样的。分层Label不为Char模式 dc23分层Label为Char模式 dc9道具的预制体结构道具使用情况根据后台输出可以看出一共有35个需要显示的道具实际上只创建了3 x5 15个道具就搞定了,即使有再多需要显示的道具也只用这15个道具。dc 从64 减少到9依然用上了ListView少创建重复利用的原理只是加上分层管达到了这样的效果还算过得去吧。结语以上是我在之前的ListView基础上添加了网格显示分层管理等能力后写出来的新组件我给它起名叫GridLayerListView是因为它是一个支持网格显示分层管理节点的ListView。一个既可以杀鸡也可以杀牛的刀。就是对ListView情有独钟没办法了。我并没有说这个是最优的方案也不保证没有bug(我还不是一个敢说自己写的东西没bug的牛人)思想仅供参考大神可以绕道。如果你想将dc降到更低那么你还需要做一些其他的优化。建议阅读文弱书生陈皮皮的《Cocos Creator 性能优化DrawCall》进入公众号回复listview即可获得demo的git地址。欢迎扫码关注公众号《微笑游戏》浏览更多内容。如果您觉得文章还可以点赞、在看、分享、赞助都是对我最大的鼓励在下将感激不尽。微信图片_20190904220029.jpg更多内容跨引擎游戏开发框架小游戏SDK整合框架使用四叉树优化碰撞检游戏开发中UI管理器的使用小游戏开发中如何优雅的使用本地存档sdk接入整合用一个变量切换不同渠道CocosCreator之AssetBundle使用方案分享CocosCreator之填色游戏的一种实现方案一个可屏蔽长短链接的网络模块游戏开发中的人工智能