【问题标题】:Cocos2d-x Object PoolingCocos2d-x 对象池化
【发布时间】:2015-07-10 15:17:13
【问题描述】:

我创建了如下的对象池。

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&lt;size_type&gt;(this-&gt;__end_ - this-&gt;__begin_);}

我的对象拉取方法如下。

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

【问题讨论】:

  • 哪个语句导致了异常?
  • CreatePools 方法有效,但我无法从池中提取对象。当我调用创建敌人方法程序崩溃并且 cocos 库显示此 {return static_cast(this->__end_ - this->__begin_);}

标签: cocos2d-x cocos2d-x-3.0 object-pooling


【解决方案1】:

for (i = 0; i

MAX_ARROW_NUMBER 应该是 MAX_ENEMY_NUMBER 吗?

因为以 MAX_ENEMY_NUMBER 的大小创建了enemyPool

enemyPool = 新向量(MAX_ENEMY_NUMBER);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多