1

我创建了如下的对象池。

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

当我尝试从池中拉出对象时,cocos 给出了这个错误;{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);
4

1 回答 1

0

对于 (i = 0; i < MAX_ARROW_NUMBER; i++)

MAX_ARROW_NUMBER 应该是 MAX_ENEMY_NUMBER 吗?

因为enemyPool 的创建大小为 MAX_ENEMY_NUMBER

敌人池 = 新向量(MAX_ENEMY_NUMBER);

于 2015-07-13T03:18:59.900 回答