动画后cocos2d autoremove精灵

And*_*rew 3 c iphone objective-c cocos2d-iphone

我是cocos2d和iphone开发的新手.我想创建一些动画,当一些带有它的精灵的物理对象被破坏时(例如显示一个闪光).我想做一些我会说的对象:运行动画并在完成后摧毁自己.然后我想忘记这个对象 - 它应该在动画结束时自动销毁.最好的方法是什么?

sly*_*rel 8

您可以使用CCSequence创建操作列表.您要做的第一个动作应该是您的常规动作(或序列).第二个动作应该是CCCallFuncND动作,你可以调用一个清理函数并传递给定的精灵.

在我的头顶,我会做这样的事情:

CCSprite* mySpriteToCleanup = [CCSprite spriteWithFile:@"mySprite.png"];
[self addChild:mySpriteToCleanup];

// ... do stuff

// start the destroy process
id action1 = [CCIntervalAction actionWithDuration:0];  // the action it sounds like you have written above.
id cleanupAction = [CCCallFuncND actionWithTarget:self selector:@selector(cleanupSprite:) data:mySpriteToCleanup];
id seq = [CCSequence actions:action1, cleanupAction, nil];
[mySpriteToCleanup runAction:seq];
Run Code Online (Sandbox Code Playgroud)

并在清理功能:

- (void) cleanupSprite:(CCSprite*)inSprite
{
    // call your destroy particles here
    // remove the sprite
    [self removeChild:inSprite cleanup:YES];
}
Run Code Online (Sandbox Code Playgroud)

您可以在这两个操作之间添加另一个操作以及您的destroy粒子操作,而不是在end函数中调用它.

  • 非常好.在cocos2D 2.0中你也可以使用块:`CCAction*cleanupAction = [CCCallBlock actionWithBlock:^ {[mySpriteToCleanup removeFromParentAndCleanup:YES]; }];` (5认同)