1

I created object pool as the following.

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);
    }

When I try to pull object from pool, cocos gives this error; {return static_cast<size_type>(this->__end_ - this->__begin_);}

My object pulling method as following.

auto enemy = enemyPool->at(enemyIndex);
            enemyIndex++;
            if (enemyIndex == enemyPool->size())
                enemyIndex = 0;
            enemy->stopAllActions();
            enemy->setPosition(myStartPoint);
            enemy->runAction(myAction);
            enemy->setVisible(true);
Valar Morghulis
  • 916
  • 1
  • 9
  • 26
  • Which statement is causing the exception? – trojanfoe Jul 10 '15 at 15:20
  • CreatePools method is working, but I cant pull object from pool. When I call create enemy method program crashes and cocos library shows this {return static_cast(this->__end_ - this->__begin_);} – Valar Morghulis Jul 10 '15 at 23:23

1 Answers1

0

for (i = 0; i < MAX_ARROW_NUMBER; i++)

does MAX_ARROW_NUMBER should be MAX_ENEMY_NUMBER ?

because enemyPool is created with size of MAX_ENEMY_NUMBER in

enemyPool = new Vector(MAX_ENEMY_NUMBER);

yangguang1029
  • 1,813
  • 14
  • 16