2012-03-21 11 views
0

私はiOS用のゲームを開発中です。私のアニメーションを見るにはNSMutableArray addobjectをスケジュールする必要があります。NSMutableArrayへの挿入のスケジュール

私はモンスターオブジェクトのすべてのアクションを停止してから、死アニメーションを開始して、それを削除する配列に挿入します。実際には、モンスターを即座に削除するため、アニメーションを見ることができません。

私はそのaddObjectをスケジュールしようとしていますが、私はそれを行う方法を見つけることができません。

私はあなたから何か助けてもらえますか?ありがとう:)

要するに:[array addObject:object]を実行するためにアニメーションを終了したいです。

PS:私は言及しませんでした。

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion 

あなたが完了ブロックを使用することができます。私は、私はあなたがあなたのアニメーションを実行しているかについては明らかではないんだけど、あなたのような、UIViewのいずれかの方法を使用している場合、Cocos2d

+0

「CCAnimation * explosionAnim =追加[:explosionFrames遅延:CCAnimationのanimationWithFramesを0.15f]。 self.explosionAction = [CCAnimate actionWithAnimation:explosionAnim restoreOriginalFrame:NO]; 「これが私のアニメーションを扱う方法です。アニメーションはうまくいきました、私はちょうど2番目の終わりにそれをスケジュールする必要があります。私が[monsterToDelete addObject:lilMonster]にコメントすると、うまく動作しますが、モンスターは削除されません。 – Kanttarino

答えて

0

あなたはここで2つのオプションがあります。

OPTION 1:それの死のア​​クションが終了した場合は基本的に教えてくれるモンスターに変数を追加します。削除する場合はtrueに設定します。 monstersToDelete配列をクリーンアップするコードを修正して、死亡アクションが終了したモンスターだけを削除する必要があります。

オプション2:死亡行為が行われたときにモンスターがデリゲートを呼び出すようにします。ような何か:

- (void) startDeathAction : (id) target : (SEL) sel 
{ 
    Action* myCurrentAction = ...// your death action here 
    [self runAction:[CCSequenceAction actionWithActions: myCurrentAction,[CCCallFunc actionWithTarget: target selector:sel ]]; 
} 

、あなたは死のアクションを開始しているコードには

[monster stopAllActions]; 
[monster startDeathAction: self : @selector(onMonsterDeath)]; 
... 
- (void) onMonsterDeath 
{ 
    [monsterToDelete addObject: lilMonster]; 
} 
+0

このコメントをありがとうございます。どうすればmonsterToDeleteとlilmonsterをonMonsterDeathに渡すことができますか? – Kanttarino

+0

さて、私は関数変数の代わりにクラスの変数としてmonstersToDeleteを保存する必要があると思います。そして、あなたは "送信者"変数を追加するCCCallFuncNを呼び出すことによって、lilモンスター変数をonMonsterDeathに渡すことができます。 –

0

で働いていますあなたのモンスターを削除する。

+0

CCAnimation * explosionAnim = [CCAnimation animationWithFrames:explosionFrames delay:0.15f]; self.explosionAction = [CCAnimate actionWithAnimation:explosionAnim restoreOriginalFrame:NO];これが私のアニメーションをどのように扱うかです。アニメーションはうまくいきました、私はちょうど2番目の終わりにそれをスケジュールする必要があります。私は[monsterToDelete addObject:lilMonster]にコメントしてもうまくいきますが、モンスターは削除されません。 – Kanttarino

0

アニメーションの終了時にイベントがある場合は、そのオブジェクトを配列に追加するデリゲート関数を登録してみることができます。

この方法では、アニメーションの再生が終了した直後にオブジェクトが削除されます。

関連する問題