cocos2d 动画后自动删除精灵精灵、动画、cocos2d

2023-09-06 14:53:39 作者:幼儿园杠把子

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

I'm new to cocos2d and to iphone development at all. I want to create some animation, when some physical object with it's sprite is destroyed (for example to show a splash). And i want to to make some object i will say to: run the animation and destroy yourself when done. Then i want to forget about this object - it should be destroyed automatically when animation is finished. What is the best way to do it?

推荐答案

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

You can use CCSequence to create a list of actions. The first action you do should be your regular action (or sequence). The second action should be CCCallFuncND action, where you can call a cleanup function and pass the given sprite.

在我的脑海中,我会做这样的事情:

Off the top of my head I'd do something like this:

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

在清理功能中:

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

您也可以在这两个动作之间添加另一个动作以用于销毁粒子动作,而不是在结束函数中调用它.

You could add in another action between these two actions as well for your destroy particle actions instead of calling that in the end function.