我对cocos2d-x v3中的一些问题有一些基本的问题。
1。)当我创建这样的精灵时:
cocos2d::Sprite *sprite1 = cocos2d::Sprite::create("test.png");
auto sprite2 = cocos2d::Sprite::create("test.png");
我如何为他们提供便利?我应该使用autorelease(它在创建后使用时会崩溃)吗?我可以使用两种变体:
sprite1->removeFromParentAndCleanup(true);
sprite2->removeFromParentAndCleanup(true);
2。)当我希望动画在我的HelloWorldScene中有效时,我可以在需要时使用它,我该怎么办呢?我尝试过类似的东西:
void HelloWorld::runAnimationWalk() {
auto spritebatch = cocos2d::SpriteBatchNode::create("robo.png");
auto cache = cocos2d::SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("robo.plist");
//spritebatch->addChild(worker);
Vector<SpriteFrame *> animFrames(5);
char str[100] = {0};
for(int i = 1; i <= 5; i++)
{
sprintf(str, "robot%i.png", i);
cocos2d::SpriteFrame* frame = cache->getSpriteFrameByName( str );
animFrames.pushBack(frame);
}
auto animWalk = cocos2d::Animation::createWithSpriteFrames(animFrames, 0.1f);
vector<Worker>::iterator it = workerVector.begin();
for(int k = 0; k<workerVector.size();k++) {
if(it->getType() == 1)
it->getWorker()->runAction(RepeatForever::create(Animate::create(animWalk)));
it++;
}
}
这样可行,但我想在改变动画后总是调用该函数。我试图保存spograbatch,缓存等...全局,但动画在几次后消失了。
答案 0 :(得分:0)
回答1)是的。这是一个完整的场景:
//Create
Sprite *sprite1 = cocos2d::Sprite::create("test.png");
this->addChild(sprite1);
// Deleter Later
sprite1->removeFromParent();
回答2)您可以创建动画(Animation*
)并在任何精灵上运行它。
一些说明:
RepeatForever::create(YourAnimation)
制作无限版动画。Animation*
和retain()
,直到在某个目标(精灵)上运行它为止。 (在目标上运行时不要忘记ro release
)