我用的是Cocos2dx 3.7
我需要对很多个 UI 文件进行处理,从UI的根节点遍历,
获得各个控件,然后对某几个特定的控件类型,比如Button ,Text 之类的做出修改
我事先不知道控件名字的,因为UI太多,所以直接遍历的。
请问有没有什么API 可以获取控件的类型? 比如 getWidgetType 之类的?
我用的是Cocos2dx 3.7
我需要对很多个 UI 文件进行处理,从UI的根节点遍历,
获得各个控件,然后对某几个特定的控件类型,比如Button ,Text 之类的做出修改
我事先不知道控件名字的,因为UI太多,所以直接遍历的。
请问有没有什么API 可以获取控件的类型? 比如 getWidgetType 之类的?
求给力啊,有没有大神研究过Cocos源代码?里面应该有的


有没有特别熟悉Cocos 源码的?求救啊,我自己也找了半天了
当一个东西你觉的几乎不可能实现时 往往是因为你之前的设计思路或者方向出现了问题


用动态类型转换,转换一下是可以的,然而效率会变低。所以在找Cocos源码里面怎么判断具体是哪种Widget
使用C艹标准的typeid运算符即可,比如:if (typeif(pWidget) == typeid(cocos2d::ui::Button)) CCLOG("%s", “这是一个按钮”);

这个可以有,老大也说可以用这个。我用的是
if (dynamic_cast<Button*>(rootNode) )
{
dynamic_cast<Button*>(rootNode)->setTitleFontName(“arial.ttf”);
}
这样的,不知道那样效率高呢?
如果仅仅判断控件的类型是不是按钮的话,typeid的效率更高。
另外要进行类型转换来使用的话,效率更高的方式是使用变量把转换结果保存下来,而不是每次使用都dynamic_cast一次:
if (auto pCtrlName = dynamic_castui::Button*(pSender))
{
pCtrlName->setTitleFontName(“arial.ttf”);
pCtrlName->其它成员;
// ……
}
谢谢了,刚刚又查了下二者区别,确实如此