示例#1
0
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;
}