一个寻找cocostudio任意节点的函数

来源:互联网 发布:交换机端口 编辑:程序博客网 时间:2024/06/14 00:23
注:资源里一定不能有名字相同的资源
.h中:
#ifndef __SANGUO_UTILS_H__#define __SANGUO_UTILS_H__#include "cocos2d.h"USING_NS_CC;/***  在节点树中按名字来寻找节点**  @param root 根节点*  @param name 节点名称**  @return 找到返回对应节点,找不到返回null*/cocos2d::Node* seekChildByName(cocos2d::Node* root, const std::string& name);template <class RET>RET seekChildByNameWithRetType(cocos2d::Node* root, const std::string& name){auto ret = dynamic_cast<RET>(seekChildByName(root, name));CCASSERT(ret, "Can't get Object with the name or the type");return ret;}#endif 

.cpp中

#include "utils.h"Node* seekChildByName(Node* root, const std::string& name){if (!root){return nullptr;}if (root->getName() == name){return root;}const auto& arrayRootChildren = root->getChildren();for (auto& subNode : arrayRootChildren){auto child = dynamic_cast<Node*>(subNode);if (child){auto res = seekChildByName(child, name);if (res != nullptr){return res;}}}return nullptr;}

0 0
原创粉丝点击