不推荐使用CCMutableArray,如何更改代码

时间:2012-07-30 21:19:38

标签: cocos2d-iphone cocos2d-x

我正在研究cocos2d-x SimpleGame项目,我被困在第5章http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Chapter_5_-_How_to_Detect_the_Collisions

我发现CCMutableArray不赞成使用CCArray。但是我如何修改以下内容,使其与CCArray一起使用(显然不支持模板)?

HelloWorldScene.h

cocos2d::CCMutableArray<cocos2d::CCSprite*> *_projectiles;

HelloWorldScene.cpp

// in init()
// Initialize arrays
_projectiles = new CCMutableArray<CCSprite*>;

HelloWorld::~HelloWorld()
{
  if (_targets)
  {
    _projectiles->release();
    _projectiles = NULL;
  }
}

HelloWorld::HelloWorld()
:_projectiles(NULL)
{
}

void HelloWorld::update(float dt)
{
  CCArray *projectilesToDelete = new CCArray<CCSprite*>;
  CCMutableArray<CCSprite*>::CCMutableArrayIterator it, jt;

  for (it = _projectiles->begin(); it != _projectiles->end(); it++)
  {
     CCSprite *projectile = *it;
     // (...)
  }
  // (...)
}

3 个答案:

答案 0 :(得分:6)

我认为是

CCArray* array1 = CCArray::create();

以后再使用它:

CCObject* arrayItem;
CCARRAY_FOREACH(array1, arrayItem){
    CCSprite* pItem = (CCSprite*)(arrayItem);
    //your code here
}

答案 1 :(得分:0)

我使用std :: list&lt;&gt;相反,它运作良好。 只是删除可能会有些低效。

我是cocos2d-x初学者,我不知道为什么他们“重新发明轮子”(仅在初学者看来),如CCMutableArray,CCArray ......这件事。

答案 2 :(得分:0)