CCActionInterval* CCAnimate::reverse(void)
{
	CCMutableArray<CCSpriteFrame*> *pOldArray = m_pAnimation->getFrames();
	CCMutableArray<CCSpriteFrame*> *pNewArray = new CCMutableArray<CCSpriteFrame*>(pOldArray->count());
   
	if (pOldArray->count() > 0)
	{
		CCSpriteFrame *pElement;
		CCMutableArray<CCSpriteFrame*>::CCMutableArrayRevIterator iter;
		for (iter = pOldArray->rbegin(); iter != pOldArray->rend(); iter++)
		{
			pElement = *iter;
			if (! pElement)
			{
				break;
			}

			pNewArray->addObject((CCSpriteFrame*)(pElement->copy()->autorelease()));
		}
	}

	CCAnimation *pNewAnim = CCAnimation::animationWithFrames(pNewArray, m_pAnimation->getDelay());

	pNewArray->release();

	return CCAnimate::actionWithDuration(m_fDuration, pNewAnim, m_bRestoreOriginalFrame);
}
CCActionInterval* CCAnimate::reverse(void)
{
	CCArray *pOldArray = m_pAnimation->getFrames();
	CCArray *pNewArray = new CCArray(pOldArray->count());
   
	if (pOldArray->count() > 0)
	{
		CCSpriteFrame *pElement;
		//CCArray::CCMutableArrayRevIterator iter;
		//for (iter = pOldArray->rbegin(); iter != pOldArray->rend(); iter++)
		//{
		//	pElement = *iter;
		//	if (! pElement)
		//	{
		//		break;
		//	}

		//	pNewArray->addObject((CCSpriteFrame*)(pElement->copy()->autorelease()));
		//}
		CCObject* pObj = NULL;
		CCARRAY_FOREACH(pOldArray, pObj)
		{
			pElement = (CCSpriteFrame *)pObj;
			if (! pElement)
			{
				break;
			}

			pNewArray->addObject((CCSpriteFrame*)(pElement->copy()->autorelease()));
		}