我正在使用CCAnimation类来使用具有多个CCSprite的动画。我想要的是:
“动画完成后删除精灵”
如果有人为此工作,请告诉我。我该怎么办呢。
答案 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);