我正在使用 CCAnimation 类来使用具有多个 CCSprite 的动画。我想要的是:
“在动画完成后移除精灵”
如果有人在这方面工作,请告诉我。我应该为此做些什么。
我正在使用 CCAnimation 类来使用具有多个 CCSprite 的动画。我想要的是:
“在动画完成后移除精灵”
如果有人在这方面工作,请告诉我。我应该为此做些什么。
我知道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);
这是动画完成后销毁对象的简单方法这在粒子中非常有用
假设m_action
你的动画m_sprite
是你的精灵节点。
然后你可以创建一个CCSequence
动作,CCCallFunc
在最后一个动作,像下面的代码:
CCSequence* seq = CCSequence::create(action,
CCCallFunc::create(m_sprite, callfunc_selector(CCSprite::removeFromParent),
NULL);
m_sprite->runAction(seq);
sprite_name->runAction(Sequence::create(ScaleTo::create(1, 0),RemoveSelf::create(), NULL));