这设计是不是 太绕了

ccnode 对象 可以addwidget widget对象。。。这样是正常的
但是 也可以addchild widget对象 但是 这样 点击事件全无(但是不报错)
widget 可以addchild widget对象
ccnode对象 只能通过 addnode!!
:2: 亲 你们 这是要哪样。。。。太绕了吧

昨天 一不小心 ccnode addchild了一个:6: widget 结果 。。。。。没错 整个人巴扎嘿了。。。 半天 查不出来啊。。!!!也不报错。。。。但是 就是没有点击事件,,,,这很尴尬的哇如果 ccnode 不能 addchild widget 对象 那就和 widget 一样 写个断言算了。。。。哎 顺便 求版主 把这方面的东西 最好在系统普及下

对的,这很蛋疼。。。害人不浅。。。

楼主您好,您应该目前使用的版本是2.2.*版本,addWidget和addNode的区别如下:

如果你想添加一个需要touch事件的控件,那么这个控件就一定需要被添加到一个TouchGroup(UILayer)中,否则是无法获得touch事件的。
一个被添加到TouchGroup中的控件,其所有的子控件也可以获得touch事件,调用方法为TouchGroup->addWidget(widget);

如果你想添加一个不需要touch事件的控件,则该控件可以被addChild到任意一个node上,调用方法为 Node->addChild(widget);

Widget的addNode方法是为了解决Widget类型的子节点和非Widget类型的子节点的冲突,所以addNode方法多用于往一个Widget上添加非Widget类型的Node,比如想往一个Button上添加一个粒子,那么就需要Button->addNode(particle); 如果是widget想要添加子控件(子widget),就调用Widget->addChild(widget);就好了。

如果您升级到cocos2dx 3.0版本,上述问题均不存在,可以随意的将widget addchild到任何node上,或 widget可以随意的addChild一个Node.

其实 吧 我觉得 这 touch事件 一般 情况 是不会全部 不需要的 ,即使不需要的话 完全 可以自己在代码或者 ui编辑器里面 去处理,作为上层的开发者 我觉得 这边的接口 越多 其实 越麻烦 我还要 区分 不同接口的功能。。。特别是这种 赶脚比较奇葩的 接口设定。。。赶脚 还是挺多余的,,,因为 这样加上去的就是一个摆设。。。。而且 很容易 产生误区 :7:

这个问题貌似有典故的,是因为之前UIWidget 不是从CCNode继承来的
现在又改成从CCNode继承,但是又想把UIWidget和CCNode分开,就搞了一套AddNode,AddWidget,AddChild

整个就是CococStudio和Cocos2d-x的UI库在打架

这个主要是如楼上所说,原先的基类是不同的,整个结构是没法融合在一起的。我们也在慢慢融合两个结构,使之更易使用,但是这个过渡需要些条件以及时间。就如cocos2dx3.0已经不存在以上问题了。

cocostudio设计得很烂,和cocos2dx本身的ui系统不大兼容,一直不敢使用

目前正在整合UI,后期会和Cocos2d-x控件整合在一起。