我寫了一個簡單的類,它不工作。歡迎提出建議。
CCArrayEnumerator.h:
#include "cocos2d.h"
class CCArrayEnumerator : public cocos2d::CCObject{
public:
static CCArrayEnumerator* create(cocos2d::CCArray* array);
cocos2d::CCObject* nextObject();
cocos2d::CCObject* peekCurrentObject();
private:
cocos2d::CCArray* _array;
CCArrayEnumerator();
~CCArrayEnumerator();
virtual bool init(cocos2d::CCArray* array);
int _currentIndex;
};
CCArrayEnumerator.cpp:
#include "CCArrayEnumerator.h"
USING_NS_CC;
CCArrayEnumerator* CCArrayEnumerator::create(cocos2d::CCArray* array){
CCArrayEnumerator *pRet = new CCArrayEnumerator();
if (pRet && pRet->init(array))
{
pRet->autorelease();
return pRet;
}
else
{
CC_SAFE_DELETE(pRet);
return NULL;
}
}
cocos2d::CCObject* CCArrayEnumerator::nextObject(){
CCObject *retval = NULL;
if(_array->count() > _currentIndex + 1){
_currentIndex++;
retval = _array->objectAtIndex(_currentIndex);
}
return retval;
}
cocos2d::CCObject* CCArrayEnumerator::peekCurrentObject(){
CCObject *retval = NULL;
if(_currentIndex != -1 && _array->count() > _currentIndex){
retval = _array->objectAtIndex(_currentIndex);
}
return retval;
}
CCArrayEnumerator::CCArrayEnumerator():
_array(NULL)
,_currentIndex(-1){
}
CCArrayEnumerator::~CCArrayEnumerator(){
if(_array){
_array->release();
_array = NULL;
}
}
bool CCArrayEnumerator::init(cocos2d::CCArray* array){
// Superclass CCObject has no init.
CCAssert(_array == NULL,"CCArrayEnumerator is already initialized.");
_array = array;
_array->retain();
return true;
}
...和你的問題是? – LearnCocos2D