void AnimatePacker::loadAnimate( char *path ) { //解析xml//////////////////////////////////// const char *pszPath = CCFileUtils::fullPathFromRelativePath(path);//从相对路径得到绝对全路径 CCSAXParser parser; AnimateSaxDelegator delegator; if (false == parser.init("UTF-8")) { //TODO return; } parser.setDelegator(&delegator); parser.parse(pszPath); //加载plist//////////////////////////////////// vector<string> plists=delegator.plists; for (int i=0;i<plists.size();i++) { CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(plists[i].c_str()); } //缓冲animate//////////////////////////////////// vector<Animate> animates=delegator.animates; CCMutableArray<CCSpriteFrame*> *spriteFramesArray = new CCMutableArray<CCSpriteFrame*>(); for (int i=0;i<animates.size();i++) { Animate animate=animates[i]; vector<string> spriteFrames=animate.spriteFrames; for (int j=0;j<spriteFrames.size();j++) { CCSpriteFrame *spriteFrame=CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(spriteFrames[j].c_str()); spriteFramesArray->addObject(spriteFrame); } CCAnimation *animation=CCAnimation::animationWithFrames(spriteFramesArray,animate.delay); CCAnimationCache::sharedAnimationCache()->addAnimation(animation,animate.name.c_str()); spriteFramesArray->removeAllObjects(); } }