gpt4 book ai didi

c++ - 是否可以创建 *CCAnimation 对象的 std::map ?

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:02 25 4
gpt4 key购买 nike

它们似乎在我创建它们的那一刻就自动释放了 =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]

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

最佳答案

哦,愚蠢的我,我不得不这样做:

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

关于c++ - 是否可以创建 *CCAnimation 对象的 std::map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15821398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com