CCNode * CCNodeLoader::parsePropTypeCCBFile(CCNode * pNode, CCNode * pParent, CCBReader * pCCBReader) { CCString * ccbFileName = pCCBReader->readCachedString(); /* Change path extension to .ccbi. */ CCString * ccbFileWithoutPathExtension = CCBReader::deletePathExtension(ccbFileName); ccbFileName = CCBReader::concat(ccbFileWithoutPathExtension, CCString::create(".ccbi")); // Load sub file const char *path = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(ccbFileName->getCString()); CCBReader * ccbReader = new CCBReader(pCCBReader); ccbReader->autorelease(); unsigned long size; unsigned char * pBytes = CCFileUtils::sharedFileUtils()->getFileData(path, "rb", &size); CCData *data = new CCData(pBytes, size); ccbReader->initWithData(data, pCCBReader->getOwner()); data->release(); ccbReader->getAnimationManager()->setRootContainerSize(pParent->getContentSize()); CCNode * ccbFileNode = ccbReader->readFileWithCleanUp(false); if (ccbFileNode && ccbReader->getAnimationManager()->getAutoPlaySequenceId() != -1) { // Auto play animations ccbReader->getAnimationManager()->runAnimations(ccbReader->getAnimationManager()->getAutoPlaySequenceId(), 0); } return ccbFileNode; }