Node* SceneReader::nodeByTag(Node *parent, int tag) { if (parent == nullptr) { return nullptr; } Node *_retNode = nullptr; Vector<Node*>& Children = parent->getChildren(); Vector<Node*>::iterator iter = Children.begin(); while (iter != Children.end()) { Node* pNode = *iter; if(pNode != nullptr && pNode->getTag() == tag) { _retNode = pNode; break; } else { _retNode = nodeByTag(pNode, tag); if (_retNode != nullptr) { break; } } ++iter; } return _retNode; }
CCNode* SceneReader::nodeByTag(CCNode *pParent, int nTag) { if (pParent == NULL) { return NULL; } CCNode *_retNode = NULL; CCArray *pChildren = pParent->getChildren(); if(pChildren && pChildren->count() > 0) { CCObject* child; CCARRAY_FOREACH(pChildren, child) { CCNode* pNode = (CCNode*)child; if(pNode && pNode->getTag() == nTag) { _retNode = pNode; break; } else { _retNode = nodeByTag(pNode, nTag); if (_retNode != NULL) { break; } } }
Node* SceneReader::getNodeByTag(int nTag) { if (_node == nullptr) { return nullptr; } if (_node->getTag() == nTag) { return _node; } return nodeByTag(_node, nTag); }