Cocos2d CCParticleSystem完成后的回调?

时间:2012-04-21 09:15:29

标签: cocos2d-iphone ccparticlesystem

当Cocos2d CCParticleExplosion完全结束时,我想运行一个回调/选择器。我该怎么做?

我尝试使用与发射器具有相同持续时间的scheduleOnce,但是由于我猜测发射器的持续时间控制它将发射新粒子的时间长度,但不是完整动画持续多长时间。

2 个答案:

答案 0 :(得分:0)

尝试使用CCCAllFunc操作对操作进行排序(使用CCSequence)。运行一个操作后,另一个操作运行,可以将CCCAllFunc分配给您选择的选择器/方法。

答案 1 :(得分:0)

不确定这是否可以接受,但我测试过“它可以在我的Mac上运行”。

在CCParticleSystem.h中

// experimental
typedef void (^onCompletedBlock)();
@property (readwrite, copy) onCompletedBlock onComplete;
在CCParticleSystem.m中

@synthesize onComplete;

在同一文件更新方法中,

_particleCount--;

        if( _particleCount == 0 && self.onComplete)
        {
            [self onComplete]();
            [[self onComplete] release];
        }

if( _particleCount == 0 && _autoRemoveOnFinish ) {
            [self unscheduleUpdate];
            [_parent removeChild:self cleanup:YES];
            return;
}

在您的代码中

particleSystem.autoRemoveOnFinish = YES;
particleSystem.position = ccp(screenSize.width/2, screenSize.height/4);
particleSystem.onComplete = ^
{
    NSLog(@"completed ..");
};

再次,相当实验..