是否可以创建一个* cananimation对象的std::map ?

Is it possible to create a std::map of *CCAnimation objects?

本文关键字:对象 cananimation std map 一个 创建 是否      更新时间:2023-10-16

它们似乎都在我创建它们的那一刻自动释放了=s

void SceneView::createAnimation(KillerRabbit* killerRabbit, std::string animation) {
    CCArray* animFrames = CCArray::createWithCapacity(15);
    int first = std::stoi(killerRabbit->spriteSheetMap[animation]["FIRST"]);
    int last = std::stoi(killerRabbit->spriteSheetMap[animation]["LAST"]);
    char str[100] = {0};
    for (int i = first; i <= last; i++) {
        // Obtain frames by alias name
        sprintf(str, (killerRabbit->spriteSheetMap[animation]["KEY"]+"[%d].png").c_str(), i);
        CCSpriteFrame* frame = sharedSpriteFrameCache->spriteFrameByName(str);
        animFrames->addObject(frame);
    }
    spriteAnimationsMap[killerRabbit->spriteName][animation] = CCAnimation::createWithSpriteFrames(animFrames, 0.1f);
    // 14 frames * 1sec = 14 seconds
    rabbitSprites[killerRabbit->spriteName][animation]->
    runAction(CCRepeatForever::create(CCAnimate::create(spriteAnimationsMap[killerRabbit->spriteName][animation])));
}

如果我省略这部分代码:

rabbitSprites[killerRabbit->spriteName][animation]->
runAction(CCRepeatForever::create(CCAnimate::create(spriteAnimationsMap[killerRabbit->spriteName][animation])));

并尝试访问

中的对象
spriteAnimationsMap[killerRabbit->spriteName][animation]

在代码的后面部分使用另一种方法,该地图中的对象将被自动释放,我如何保留它,以便我可以在以后使用存储在其中的不同动画?

哦,我真傻,我必须这么做:

spriteAnimationsMap[killerRabbit->spriteName][animation]->retain();