如何获取ui控件类型?

我用的是Cocos2dx 3.7

我需要对很多个 UI 文件进行处理,从UI的根节点遍历,

获得各个控件,然后对某几个特定的控件类型,比如Button ,Text 之类的做出修改

我事先不知道控件名字的,因为UI太多,所以直接遍历的。

请问有没有什么API 可以获取控件的类型? 比如 getWidgetType 之类的?

求给力啊,有没有大神研究过Cocos源代码?里面应该有的

:6::6::6:有没有特别熟悉Cocos 源码的?求救啊,我自己也找了半天了

当一个东西你觉的几乎不可能实现时 往往是因为你之前的设计思路或者方向出现了问题:2::2::2:

用动态类型转换,转换一下是可以的,然而效率会变低。所以在找Cocos源码里面怎么判断具体是哪种Widget

使用C艹标准的typeid运算符即可,比如:if (typeif(pWidget) == typeid(cocos2d::ui::Button)) CCLOG("%s", “这是一个按钮”);

:7: :7: :7: :7: :7: :7: :7: :7: :7: :7:

这个可以有,老大也说可以用这个。我用的是

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->其它成员;
// ……
}

谢谢了,刚刚又查了下二者区别,确实如此