Cocos2d iphone CCMutableArray已弃用,如何更改代码

Cocos2d iphone CCMutableArray已弃用,如何更改代码,cocos2d-iphone,cocos2d-x,Cocos2d Iphone,Cocos2d X,我正在完成cocos2d-x SimpleGame项目,我被困在第5章中 我发现CCMutableArray被弃用,取而代之的是CCArray。但我需要如何修改以下内容,使其与CCArray(显然不支持模板)一起工作 HelloWorld场景 cocos2d::CCMutableArray<cocos2d::CCSprite*> *_projectiles; cocos2d::CCMutableArray*\u射弹; HelloWorldScene.cpp // in init(

我正在完成cocos2d-x SimpleGame项目,我被困在第5章中

我发现CCMutableArray被弃用,取而代之的是CCArray。但我需要如何修改以下内容,使其与CCArray(显然不支持模板)一起工作

HelloWorld场景

cocos2d::CCMutableArray<cocos2d::CCSprite*> *_projectiles;
cocos2d::CCMutableArray*\u射弹;
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;
     // (...)
  }
  // (...)
}
//在init()中
//初始化数组
_射弹=新的炮弹阵;
HelloWorld::~HelloWorld()
{
如果(_目标)
{
_射弹->释放();
_射弹=空;
}
}
HelloWorld::HelloWorld()
:_射弹(空)
{
}
void HelloWorld::更新(float dt)
{
CCArray*ProjectleStore=新CCArray;
CCMutableArray::CCMutableArrayIterator it,jt;
对于(it=_射弹->开始();it!=_射弹->结束();it++)
{
CCSprite*射弹=*它;
// (...)
}
// (...)
}
我想是的

CCArray* array1 = CCArray::create();
然后再使用它:

CCObject* arrayItem;
CCARRAY_FOREACH(array1, arrayItem){
    CCSprite* pItem = (CCSprite*)(arrayItem);
    //your code here
}
我使用std::list,它工作得很好。 只是删除可能会有些低效


我是cocos2d-x的初学者,我不知道他们为什么要“发明轮子”(只是在我的初学者看来),比如CCMutableArray,CCArray。。。事物。

尝试使用std::vector,它足够好:)

)


Thx,这真的很有帮助!它是
new CCArray
而不是
CCArray::create()
CCArray\u FOREACH
而不是
CCArray\u FOREACH
。已编辑。但我认为最好使用create()静态方法并保留它,因为对象稍后将自动释放,不会出现任何问题。如果使用new CCArray()并在使用完毕后,您必须手动释放它。使用CCArray::create()会导致应用程序崩溃,而我使用“new CCArray”效果很好。@Faizan您不应该这样做。您应该使用CCArray::create()和array->retain()。如果使用new,则会破坏cocos2d-x内存管理系统,这意味着您需要手动删除阵列。这是为了从原始的cocos2d iphone移植代码,以使其更容易。