2012-03-30 9 views
3

CCAnimationの遅延をどのように変更できますか?CCAnimationでの遅延の変更

_monstrAnim = [CCAnimation animationWithFrames:monstrAnimFrames delay:0.1f]; 
       self.monstr = [CCSprite spriteWithSpriteFrameName: [NSString stringWithFormat:@"monstr_%d_1.png", currentLevel]]; 
       self.walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:_monstrAnim restoreOriginalFrame:NO]]; 
       [self.monstr runAction:self.walkAction]; 
       [monstrSpriteSheet addChild:self.monstr z:1]; 

これは正常に動作しますが、私はFPSの速度を変更し、私がすべき...

  [self.monstr stopAllActions]; 
      [self.monstr runAction:self.walkAction]; 
      [self.monstrAnim setDelay:1]; 

が、何も起こらなかった...

+0

いつ2番目のコードを実行していますか? CCAnimationを保持しない限り、実行されると解放される可能性があります。 – jonsibley

答えて

5

はあなたwalkActionを停止し、アニメーションの遅延を変更し、アクションを再作成してもう一度実行します。 CCAnimateのコードをスローすると、アクション作成時にのみ使用されるCCAnimationオブジェクトからのフレーム間の遅延がわかります。だからこのコード

[self.monstr stopAllActions]; 
[self.monstrAnim setDelay:1.f]; 
self.walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:_monstrAnim restoreOriginalFrame:NO]]; 
[self.monstr runAction:self.walkAction]; 

トリックを行います。

+0

素晴らしい仕事、ありがとう! –

+0

あなたは大歓迎です。ところで、私はあなたのプログラムで何をしているのか分かりませんが、実行後にアクションを保存するのはまれなケースです。実行後に保持され、完了後に解放されます。このコードから、あなたのクラスのwalkActionプロパティは不要と思われます。しかしこれはちょうどIMHO =) – Morion

+0

大丈夫、ありがとう、私はそれについて感謝する –