Arrays CCArray枚举器对象
据我所知,它并不存在Arrays CCArray枚举器对象,arrays,iterator,cocos2d-x,enumerator,Arrays,Iterator,Cocos2d X,Enumerator,据我所知,它并不存在 CCArray *array = CCArray::create(); CCArrayEnumerator *enumerator = array->createEnumerator(); ... CCObject *nextObjectOrNull = enumerator->nextObject(); CCObject *currentObjectOrNull = enumerator->peekCurrent
CCArray *array = CCArray::create();
CCArrayEnumerator *enumerator = array->createEnumerator();
...
CCObject *nextObjectOrNull = enumerator->nextObject();
CCObject *currentObjectOrNull = enumerator->peekCurrentObject();
这个类将使我的代码更简单,如果没有人编写它,我将立即执行。但是我还没有发现任何关于这个课程需要的请求或论坛帖子。这很奇怪。您可以编写自己的代码,但已经有一个宏可以用于相同的操作 以下是伪代码:
CCArray *array = this->getChildren();
CCObject* currentObject = NULL;
CCARRAY_FOREACH(array , currentObject )
{
CCNode *node = (CCNode*)currentObject;
}
我写了一个简单的类,它完成了这个任务。欢迎提出建议 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;
}
... 你的问题是什么?