.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; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。