3

私は cocos2d-x SimpleGame プロジェクトに取り組んでおり、第 5 章http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Chapter_5_-_How_to_Detect_the_Collisionsに行き詰まっています。

私が見つけたのは、CCArray を支持して CCMutableArray が非推奨になっていることです。しかし、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;
     // (...)
  }
  // (...)
}
4

3 に答える 3

6

それはそうですね

CCArray* array1 = CCArray::create();

後でそれを使用するには:

CCObject* arrayItem;
CCARRAY_FOREACH(array1, arrayItem){
    CCSprite* pItem = (CCSprite*)(arrayItem);
    //your code here
}
于 2012-07-30T23:07:48.120 に答える
0

std::vector を使用してみてください。それで十分です:)

http://en.wikipedia.org/wiki/Sequence_container_(C%2B%2B )

http://www.codeguru.com/cpp/cpp/cpp_mfc/stl/article.php/c4027/C-Tutorial-A-Beginners-Guide-to-stdvector-Part-1.htm

于 2012-08-20T22:11:07.350 に答える
0

代わりに std::list<> を使用していますが、うまく機能します。削除するだけで効率が悪い場合があります。

私はまだ cocos2d-x の初心者ですが、CCMutableArray や CCArray などのように (私の初心者の意見として) なぜ「車輪を再発明する」のかわかりません。

于 2012-08-10T00:41:50.753 に答える