2012-04-21 12 views
2

Cocos2d CCParticleExplosionが完全に終了したときにコールバック/セレクタを実行したいと思います。これはどうすればいいですか?Cocos2d CCParticleSystemが終了したときのコールバック?

私は、エミッタと同じ持続時間のscheduleOnceを使用しようとしましたが、完全なアニメーションの持続時間ではなく、新しいパーティクルを放出する時間のエミッタ制御時間を推測するので、あまりにも早く終了します。

答えて

0

アクションを(CCSequenceを使用して)CCCAllFuncアクションでシーケンシングしてみてください。 1つのアクションが実行された後、もう1つのアクションが実行されると、CCCAllFuncを選択したセレクタ/メソッドに割り当てることができます。

+0

わかりません。パーティクルエミッタをCCFadeInのようなアクションと同じように使うことはできますか?それ、どうやったら出来るの? –

0

これが受け入れられるかどうかはわかりませんが、私はテストして "それは私のMacで動作します"。あなたのコードでCCParticleSystem.hで

// experimental 
typedef void (^onCompletedBlock)(); 
@property (readwrite, copy) onCompletedBlock onComplete; 

同じファイル更新方法で

@synthesize onComplete; 

CCParticleSystem.m

で、

_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 .."); 
}; 

もう一度、かなり実験的です..

関連する問題