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

时间:2013-07-09 11:44:25

标签: android cocos2d-iphone cocos2d-x cocos2d-android

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

动画完成后删除精灵

如果有人为此工作,请告诉我。我该怎么办呢。

2 个答案:

答案 0 :(得分:4)

我知道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);

这是破坏物体的简单方法 动画完成,这在粒子中非常有用

答案 1 :(得分: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);