2

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

在动画完成后移除精灵

如果有人在这方面工作,请告诉我。我应该为此做些什么。

4

3 回答 3

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);

就像之前使用 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);

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

我更新了这个答案,因为在创建序列时有一种非常简单的方法可以做到这一点,只需添加RemoveSelf::create RemoveSelf 这是一个动作,因此您可以将其添加到序列中,它将在动画完成后破坏精灵或节点。

Sequence* sequence = Sequence::create(animation,animation,RemoveSelf::Create(),NULL);

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

于 2015-03-23T19:27:30.703 回答
3

假设m_action你的动画m_sprite是你的精灵节点。

然后你可以创建一个CCSequence动作,CCCallFunc在最后一个动作,像下面的代码:

CCSequence* seq = CCSequence::create(action,
                                     CCCallFunc::create(m_sprite, callfunc_selector(CCSprite::removeFromParent),
                                     NULL);
m_sprite->runAction(seq);
于 2013-07-17T09:05:05.813 回答
0

sprite_name->runAction(Sequence::create(ScaleTo::create(1, 0),RemoveSelf::create(), NULL));

于 2021-12-02T08:50:28.177 回答