#include "XAnimation.h" CXAnimation::CXAnimation(void) { m_strName = ""; m_nFrameCount = 0; m_fInterval = 0.0f; } CXAnimation::~CXAnimation() { } CXAnimation* CXAnimation::create( const char* psName, int nBegan, int nCount, float delayPerUnit /*= 1.0*/ ) { CXAnimation* pAnimation = new CXAnimation(); if(pAnimation->init(psName, nBegan, nCount, delayPerUnit)) { pAnimation->autorelease(); return pAnimation; } else { SAFE_DELETE(pAnimation); } return NULL; } bool CXAnimation::init( const char* psName, int nBegan, int nCount, float delayPerUnit /*= 1.0*/ ) { m_strName = psName; m_fInterval = delayPerUnit; m_nFrameBegan = nBegan; m_nFrameCount = nCount; char psFrameName[128] = {0}; CCArray* animFrames = CCArray::create(); for (int i = nBegan; i <= nCount; i++) { sprintf(psFrameName,"%s%02d.png", psName, i); CCSpriteFrame* pFrame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(psFrameName); ASSERT(pFrame); if (pFrame) { animFrames->addObject(pFrame); } else { CCLog("Load Animation faild:%s\n", psName); SAFE_DELETE(animFrames); return false; } } this->initWithSpriteFrames(animFrames, delayPerUnit); return true; } float CXAnimation::getInterval() { return m_fInterval; } float CXAnimation::getDuration() { return m_fInterval * m_nFrameCount; } const char* CXAnimation::getAnimationName() { return m_strName.c_str(); } int CXAnimation::getFrameCount() { return m_nFrameCount; } string CXAnimation::getFileName() { return m_strName; } //CCSpriteFrame* CXAnimation::firstFrame() //{ // return (CCSpriteFrame*)this->getFrames()->objectAtIndex(0); //} // //CCSpriteFrame* CXAnimation::lastFrame() //{ // return (CCSpriteFrame*)this->getFrames()->objectAtIndex(this->getFrameCount() - 1); //}