2012-03-30 14 views
3

Ich möchte wissen, wie kann ich Verzögerung in CCAnimation ändern?Änderung Verzögerung in 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]; 

dies funktioniert gut, aber ich sollte die Geschwindigkeit von FPS ändern, und ich tue ...

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

aber es ist nichts passiert ...

+0

Wann starten Sie das zweite Bit des Codes? Sofern Sie die CCAnimation nicht beibehalten, wird sie wahrscheinlich freigegeben, sobald sie ausgeführt wurde. – jonsibley

Antwort

5

Stoppen Sie Ihre walkAction, Ändern Sie dann die Verzögerung Ihrer Animation, erstellen Sie die Aktion erneut und führen Sie sie erneut aus. Wenn Sie den Code von CCAnimate werfen, sehen Sie, dass die Verzögerung zwischen den Frames des CCAnimation-Objekts nur während der Aktionserstellung verwendet wird. Also dieser Code

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

wird den Trick tun.

+0

funktioniert super, danke! –

+0

Sie sind willkommen. Übrigens, ich weiß nicht, was du in deinem Programm machst, aber es ist ein seltener Fall, in dem ich nach dem Laufen eine Aktion gespeichert habe. Es wird nach dem Ausführen beibehalten und nach dem Beenden freigegeben. Von diesem Codeabschnitt scheint es, dass die Eigenschaft walkAction Ihrer Klasse nicht erforderlich ist. aber das ist nur IMHO =) – Morion

+0

ok, danke, ich schätze es, ich werde darüber –