2012-06-13 13 views
8

Ich möchte wissen, was ich anstelle vonCocos2d - animationwithframes: Verzögerung: veraltet

animationWithFrames:delay: 

und

actionWithAnimation:restoreOriginalFrame: 

verwenden sollten, da sie eine Warnung, dass sie veraltet habe.

+2

Überprüfen Sie die CCDexprecated.h und. M-Dateien, um zu erfahren, wie veralteter Code geschrieben werden sollte – LearnCocos2D

Antwort

12

Cocos2d 2.0 verwendet

CCAnimation

+(id) animationWithSpriteFrames:(NSArray*)frames delay:(float)delay 

CCAnimate

+(id) actionWithAnimation: (CCAnimation*)anim 

Docs:

http://www.cocos2d-iphone.org/api-ref/2.0.0/interface_c_c_animation.html

http://www.cocos2d-iphone.org/api-ref/2.0.0/interface_c_c_animate.html

+0

Gute Antwort, aber es fehlt ein Detail der zweiten Hälfte der OP-Frage. Insbesondere müssen Sie auch die Eigenschaft 'restoreOriginalFrame' der Animation so einstellen, dass sie mit der zuvor in der veralteten Version angegebenen Eigenschaft übereinstimmt. Siehe Julios Antwort unten. (BTW, doc-Links funktionieren nicht mehr.) – Dalmazio

11

Die einzige Änderung, die Sie vornehmen müssen, ist die neue Eigenschaft: restoreOriginalFrame.

Entfernen restoreOriginalFrame vom Konstruktor dann in einer neuen Zeile, setzen Sie die Eigenschaft:

animation.restoreOriginalFrame = NO; 

Das ist es!

+0

Dies ist die richtige Antwort für die zweite Hälfte der OP-Frage. Das Festlegen der 'restoreOriginalFrame' -Eigenschaft der Animation entsprechend der zuvor angegebenen Eigenschaft ist ein wichtiges Detail, das die akzeptierte Antwort verfehlt. – Dalmazio

0
CCAnimation *sampleAnim = [CCAnimation animationWithAnimationFrames: 
            sampleAnimFrames delayPerUnit:0.2f loops:7]; 
0

Ich habe das gleiche Problem in meinem Projekt, das ich benutze.

CCSprite *image = [CCSprite spriteWithSpriteFrameName:@"a0001.png"]; 
     image.position = ccp(s.width/2,s.height/2); 
     [self addChild:image]; 
     image.tag = 1; 

     NSMutableArray *frames = [[NSMutableArray alloc] init]; 
     for (int i = 1; i <= 10; i++) { 
      NSString *frameName = [NSString stringWithFormat:@"a%04i.png",i]; 
      [frames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frameName]]; 
     } 
     CCAnimation *ani = [CCAnimation animationWithSpriteFrames:frames delay:1.0f/8.0f]; 
     [image runAction:[CCAnimate actionWithAnimation:ani]]; 

Das funktioniert gut für mich.