2013-07-09 36 views
2

我正在使用CCAnimation類來使用具有多個CCSprite的動畫。我要的是:如何在動畫完成後刪除精靈?

如果有人在這方面努力,請讓我知道「動畫完成後只是刪除精靈」。我應該爲此做些什麼。

+0

如果我只有一個精靈比我能應用removeChid方法,但在案件的動畫我不適用這一個...所以,我用什麼方法呢? –

回答

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

我知道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 ::創建 RemoveSelf這是一個動作,所以你可以把它添加到序列就會破壞精靈或動畫完成後的節點。

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

這就是摧毀 動畫後完成,這是粒子非常有用的對象省事