2013-07-09 3 views
2

하나 이상의 CCSprite와 함께 애니메이션을 사용하기 위해 CCAnimation 클래스를 사용하고 있습니다. 내가 원하는 것은 : 애니메이션 완료 후 스프라이트를 제거하는 방법은 무엇입니까?

사람이 작업하는 경우

은 알려 주시기 바랍니다 "그냥 완전한 애니메이션 후 스프라이트를 제거". 그것을 위해 무엇을해야합니까?

+0

나는 그것을 그러나 경우에 removeChid의 방법을 적용 할 수있는 것보다 단지 스프라이트가있는 경우 에니메이션을 적용하지 않습니다 ... 그래서, 어떤 방법을 사용합니까? –

답변

3

m_action이 애니메이션이고 m_sprite이 스프라이트 노드라고 가정합니다.

CCSequence* seq = CCSequence::create(action, 
            CCCallFunc::create(m_sprite, callfunc_selector(CCSprite::removeFromParent), 
            NULL); 
m_sprite->runAction(seq); 
3

내가 pktangyue 작품의 솔루션은 알고 있지만 나는이 때문에 새로운 답을 추가 할 :

그런 다음 다음 코드처럼 마지막에 CCCallFunc 활동과 더불어, CCSequence 조치를 만들 수 있습니다 적인 Cocos2D-X의 V3.0의에서 사용되지 않는 것은 더 쉽게이 작업을 수행 할 수있는 마지막 방법을 읽어 보시기 바랍니다

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

그리고 애니메이션이 입자에 매우 유용합니다 완료 후 오브젝트를 파괴하는 쉬운 방법

관련 문제