动画完成后如何删除精灵?

Aka*_*h M 2 android cocos2d-iphone cocos2d-x cocos2d-android

我正在使用 CCAnimation 类来使用具有多个 CCSprite 的动画。我想要的是:

动画完成后移除精灵

如果有人在这方面工作,请让我知道。我该怎么做。

Osc*_*eif 5

我知道pktangyue的解决方案有效,但我想添加一个新答案,因为这在cocos2d-x V3.x 中已被弃用 请阅读最终的方法,它更容易

Node *nodeSprite =(Node*)layer->getChildByName("BFL_Ready_Label");
MoveTo* animation = MoveTo::create(1.0f,Point(Director::getInstance()->getWinSize().width/2,Director::getInstance()->getWinSize().height*1.5));
CallFunc* animationDone = CallFunc::create(bind(&Node::removeFromParent,nodeSprite));
Sequence* sequence = Sequence::create(animation,animation,NULL);
node->runAction(Sequence);
Run Code Online (Sandbox Code Playgroud)

就像上一个使用 Sprite 的答案一样。

MoveTo* animation = MoveTo::create(1.0f,Point(Director::getInstance()->getWinSize().width/2,Director::getInstance()->getWinSize().height*1.5));
CallFunc::create(bind(&Sprite::removeFromParent,m_sprite));
Sequence* sequence = Sequence::create(animation,animation,NULL);
m_sprite->runAction(sequence);
Run Code Online (Sandbox Code Playgroud)

使用这个编译器不会告诉你正在使用不推荐使用的方法。我希望这会有用。

我更新了这个答案,因为当你创建一个序列时,有一个非常简单的方法来做到这一点,只需添加RemoveSelf::create RemoveSelf 它是一个动作,这样你就可以将它添加到序列中,它会在动画完成后销毁精灵或节点。

Sequence* sequence = Sequence::create(animation,animation,RemoveSelf::Create(),NULL);
Run Code Online (Sandbox Code Playgroud)

这是动画完成后销毁对象的简单方法,这在粒子中非常有用