对ui控件的一些牢骚

— Begin quote from ____

引用第19楼一笑倾宇宙于2015-08-19 15:53发表的 :
看到王哲说3.8主要做优化,在github上看了以下最新的代码,这一块还是没有大的变化,有点失望。
3.8beta版发布了,对这块只字未提。是又变卦了吗?投资人逼的? http://www.cocoachina.com/bbs/job.php?action=topost&tid=319393&pid=1371616

— End quote

每个版本发布前是有计划有安排的,比如这个版本要修复的bug,要增加的亮点等等。3.8的初衷没有改变,从beta0的发布说明也可以看到,都是bug修复和功能的完善。

其中UI相关的有:

Added RadioButton and RadioGroup
ScrollView: added scroll bar
ListView: added scroll bar
PageView: supports scrolling vertically
Slider: post press down and press up event
Slider: can change percent scope
EditBox: supports multi-line input on Android
EditBox: the behavior on Android is the same as on iOS
Can add child to Label
Can auto-batch bitmap font and char map

Github上的有
https://github.com/cocos2d/cocos2d-x/issues/12516

这些是有统计下来的,当然肯定漏掉不少。

如果您对某些功能不满或者有bug提交,可以贡献代码的话非常欢迎,不能贡献代码的话可以把bug完整的重现方式,功能的详细需求描述发在github issue上或者中英文论坛上(确认合理我们会帮忙提到github issue)也是可以的。

额,好吧~:12::12::12:

这四个问题虽然已经被吐成这样了,我忍不住要+10086, 深受其害,真的很烂好吧。listview这性能,逼得我们重写引擎代码。
你们引擎还略好点,我找王哲微信吐槽,还能有个响声。在你们github提交代码,好歹有点回应。
我更想说,你们那个cocostudio,才是烂到家了。能不能把基本的控件和相关特性支持全面了?复杂界面还想让程序员手写控件吗?UI和UX都快没法做了,我们UED部门几乎每天都在问候你们。做不好就开源让大家来改算了,不要逼得大家都自己做编辑器。

我有个想法,如果可以直接用lua写插件给cocostudio当控件,并且支持设置图片,等其他属性的话,是不是更好一点,这样大家写了插件可以提交上来,官方觉得好用合理的可以直接放到默认里面,觉得不好就放到商店里让需要用的人自己去下载。
现在这个要想写原生控件以外的插件太麻烦了,很少有人会用。

我也跟风吐槽下。因为之前项目一直是2.1.4,使用了2年,那个版本的坑被我踩完后换刀3.x,发现坑还是这么多。
为何一定要引入一套listView的东西,这东西没有复用简直不可使用。而且以前的CCTableView都这么多个版本了,大多数开发者也都习惯这个控件了,在cocos studio和UIWidget里却直接不支持这种控件而是只支持效率奇差的ScrollView和ListView,原因是什么?
另外UIWidget的onEnter效率太差,如果有上千个node, onEnter这块的消耗直接就要2秒,我只能说updateSizeAndPosition()这个函数可以优化的空间太大。再有就是doLayout的时机,居然是在visit的时候。这直接导致我想在一个页面onEnter的时候去做CCMoveTo或者其他与position有关的操作全部失效。
字体部分,生成的效率也太差,特别是如果使用描边字体,会有2次的setTTFConfig,而且每次都会生成一个无用的非描边字体,这里会特别慢。另外字体label每个缓存纹理的batchNode的capacity是可以算出来的,你们非要让他自己去加,浪费不少内存和时间。
最后一个描边字体只要只用完第一张缓存字体纹理后,会出现纹理混乱的bug我就不提了,至少3.7.1还未修复。可能大部分开发者不会用到描边字体也就没人报这个bug。

— Begin quote from ____

引用第24楼notsure于2015-08-24 23:08发表的 回 4楼(子龙山人) 的帖子 :
我也跟风吐槽下。因为之前项目一直是2.1.4,使用了2年,那个版本的坑被我踩完后换刀3.x,发现坑还是这么多。
为何一定要引入一套listView的东西,这东西没有复用简直不可使用。而且以前的CCTableView都这么多个版本了,大多数开发者也都习惯这个控件了,在cocos studio和UIWidget里却直接不支持这种控件而是只支持效率奇差的ScrollView和ListView,原因是什么?
另外UIWidget的onEnter效率太差,如果有上千个node, onEnter这块的消耗直接就要2秒,我只能说updateSizeAndPosition()这个函数可以优化的空间太大。再有就是doLayout的时机,居然是在visit的时候。这直接导致我想在一个页面onEnter的时候去做CCMoveTo或者其他与position有关的操作全部失效。
字体部分,生成的效率也太差,特别是如果使用描边字体,会有2次的setTTFConfig,而且每次都会生成一个无用的非描边字体,这里会特别慢。另外字体label每个缓存纹理的batchNode的capacity是可以算出来的,你们非要让他自己去加,浪费不少内存和时间。
最后一个描边字体只要只用完第一张缓存字体纹理后,会出现纹理混乱的bug我就不提了,至少3.7.1还未修复。可能大部分开发者不会用到描边字体也就没人报这个bug。
http://www.cocoachina.com/bbs/job.php?action=topost&tid=319393&pid=1376055

— End quote

关于为什么要用效率这么差的 ListView, 这里面很多历史 原因,我准备在3.9版本添加 cell 复用。。。 而updateSizeAndPosition()这个函数实际上Studio 2.x 以后的版本已经没有用了。但是为了兼容性,也不能删除 。
关于 doLayout 的时机,你的建议是?

label 的效率问题我会跟同事去对一下。

感谢吐槽,这让我看到了 UI 框架的很多不足。

各位用户, 既然cocos2dx是开源的, ListView写个复用很难么, 我都自己写了一个, 如果代码质量好, 还可以请求push到官方的库, (我代码质量一般般, 反正我自己用是够了.)

烂的不止是UI,我现在已经转unity了,各种好用

赞,你可以把代码 push 过来,如果质量 ok,就可以合并。

你可以转 unity。。。 不过一样有坑

关于label纹理混乱可以具体说下吗?给个sample code或者截图

UI编辑器确实不好。 各种问题啊

我们用2.2.6还是挺好的,高级的功能也用不上,有几个小坑也很容易就填了,只是希望2.2.x版本能继续维护,支持ios9,可别不维护了。这现在很多人在用呢。从2.x升级到3.x这个变动太大,搞不起。

我也是刚开始使用2.2.6,坑踩的都要吐血了,希望2.X也能继续维护

:2: :2: :2: :2: :2: :2:

大家都不是小白了,别总是盯着人家引擎组的人骂,许多事情不是他们能决定的。 就像你现在做游戏,老板叫你打翻重做你怎么办? 有建议就提点,有好代码就贡献点,其它的你就去转unity吧

不是有建议就提,有好代码就贡献的问题,我想说的是2dx从架构上就有很大问题,你觉得引擎组会解决吗,2dx过于臃肿,仅仅是引用计数给游戏带来的性能开销就达到2%,一个良好设计的业务逻辑(包含不太复杂的算法),即使加上Box2D,性能开销也就占到10%左右(所以遇到碰撞什么的,放心大胆的用物理引擎吧,物理引擎大概占到整个游戏性能的8%,这里的百分比来自于我们公司开发的数款游戏的平均数据),你想想这个引擎的性能吧。如果只是为老板,不是为用户(我说的是引擎使用者),这个引擎也差不多走到头了。是的,老板有钱,有权力推翻,想怎么玩都可以,发工资就行,我陪他玩,但是他失去的是什么,员工积极性、业界口碑,你要知道这年头程序员比服务器值钱,你觉得他有多大胆量这么玩,还不是TMD靠我们这些人给他触控测试,提BUG,那么遇到坑凭什么不让喷一下!

3.9ListView的Item复用在哪里呢?找了3.9没有

我们现在项目是用lua写的,以前是跟着quick过来的
用lua翻译了as3的tweenlite过来替换很是垃圾的CCAction,
用lua重写一套基于Label的textfield,支持常用html标签和超连接点击
用lua重写一套ScrollView结合缓动公式和Tweenlite做了回弹效果和下拉更新之类
用lua重写一套listview实现item的重复利用
btn基于UIButton用lua封装了一下

我不是c++出身,不知道是不是c++不好实现,最后想说cocos2dx的ui我简直看不下去,都不想说了,也不指望了,自己解决掉算了
部分实在是没时间修改等着3.9的换行editbox和九宫格的loadingbar,不过质量我也没有太大期望了,免得又失望一次

然而3.9并没有listview的复用。。