数组未加载 - "index out of range in objectAtIndex()"



我是 Cocos2d-x 的新手,我正在使用一个数组将角色精灵列表保存在图层上。

   characterArr = CCArray::createWithCapacity(NUMBER_CHARACTERS/NUMBER_CHARACTERS_PER_SCENE);
  for (int i = 1; i <= NUMBER_CHARACTERS/NUMBER_CHARACTERS_PER_SCENE; ++i)
  {
    CCLayer* characterLayer = CCLayer::create();
    for (int j = 1; j <= NUMBER_CHARACTERS_PER_SCENE; ++j)
    {
      int characterID = j + NUMBER_CHARACTERS_PER_SCENE*(i - 1);
      CCString* characterName = (CCString::createWithFormat("ChooseCharacterScene/c%i.png", characterID));
      CCSprite* character = CCSprite::create(characterName->getCString());
      CCMenuItemSprite* characterItem = CCMenuItemSprite::create(character,
                                                                 character,
                                                                 this,
                                                                 menu_selector(ChooseCharacterScene::CharacterTouched));enter code here`
      characterItem->setTag(characterID);
      CCMenu* menu = CCMenu::create(characterItem, NULL);
      characterLayer->addChild(menu, GR_FOREGROUND);
    characterArr->addObject(characterLayer);

然后在menu_selector函数中,我使用函数objectAtIndex()函数来获取玩家触摸的层的索引,但是当我测试时,有时它可以工作,有时,字符数组是空的。谁能帮我解决这个问题?谢谢。

int layerIndex = characterTouchedID/NUMBER_CHARACTERS_PER_SCENE;
    if (characterTouchedID % NUMBER_CHARACTERS_PER_SCENE == 0) {
      layerIndex--;
    }
    ((CCLayer* )characterArr->objectAtIndex(layerIndex))->addChild(character, GR_MIDDLEGROUND);

我发现此错误的原因是 CCArray 是一个自动释放对象。从这里引用类似的错误: C++ 无法在 cocos2d-x 中获取全局变量的值

相关内容

最新更新