2015-07-10 32 views
1

我創建瞭如下的對象池。Cocos2d-x對象池

void Arrow::CreatePools(cocos2d::Layer *layer) 
{ 
    Sprite * sprite; 
    int i; 

    //--CREATE ENEMY OBJECT POOL--// 
    enemyPool = new Vector<Sprite*>(MAX_ENEMY_NUMBER); 
    enemyIndex = 0; 
    for (i = 0; i < MAX_ENEMY_NUMBER; i++) { 
     sprite = Sprite::create("Enemy.png"); 
     sprite->setVisible(false); 
     layer->addChild(sprite); 
     enemyPool->pushBack(sprite); 
    } 

當我嘗試從池中拉對象時,椰樹給出了這個錯誤; {return static_cast<size_type>(this->__end_ - this->__begin_);}

我的對象拉動方法如下。

auto enemy = enemyPool->at(enemyIndex); 
      enemyIndex++; 
      if (enemyIndex == enemyPool->size()) 
       enemyIndex = 0; 
      enemy->stopAllActions(); 
      enemy->setPosition(myStartPoint); 
      enemy->runAction(myAction); 
      enemy->setVisible(true); 
+0

哪條語句導致異常? – trojanfoe

+0

CreatePools方法正在工作,但我不能從池中拉對象。當我調用創建敵方法程序崩潰並且cocos庫顯示這個{return static_cast (this - > __ end_ - this - > __ begin_);} –

回答

0

爲(I = 0;我< MAX_ARROW_NUMBER;我++)

不MAX_ARROW_NUMBER應MAX_ENEMY_NUMBER?

因爲enemyPool在

enemyPool =新向量(MAX_ENEMY_NUMBER)與MAX_ENEMY_NUMBER的大小創建的;