2012-02-22 102 views
0

我在cocos2d動畫的一個問題,當運行動畫首次,它完美的作品,一段時間後,動畫速度變緩慢cocos2d的動畫延遲一段時間後(分鐘)

我已經使用了下面的代碼

-(void)animateImages:(NSString *)animationName startImageName:(NSString*)sImage individualImageName:(NSString *)imgName withDelay:(CGFloat)delay startFrame:(NSInteger)sFrame endFrame:(NSInteger)eFrame { 

isAnimating=YES; 


[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"%@.plist",animationName]];   

// Create a sprite sheet with the March images 
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:[NSString stringWithFormat:@"%@.png",animationName]]; 



[self addChild:spriteSheet z:0]; 

// Load up the frames of our animation 
NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
for(int i = sFrame; i <= eFrame; i=i+2) { 
    [walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%@ %d.jpg",imgName,i]]];//@"stand march %d.jpg" 
} 


NSLog(@"After NSMutableArray"); 


    CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:delay]; 
// CCAction *standByAtion =[CCSequence actions:       
//        [CCRepeat actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:YES] times:1],[CCCallFunc actionWithTarget:self selector:@selector(callAgain:)],nil]; 

CCAction *standByAtion =[CCSequence actions:       
         [CCRepeat actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO] times:1],[CCCallFunc actionWithTarget:self selector:@selector(setAnimatingToFalseAfterAnimation:)],nil]; 


[walkAnimFrames removeAllObjects]; 
walkAnimFrames=nil; 

CGSize winSize = [[CCDirector sharedDirector] winSize]; 
CCSprite *images = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"%@",sImage]];//@"stand march 101.jpg" 

images.position=ccp(winSize.width/2,winSize.height/2); 
images.scaleX=1.6; 
images.scaleY=1.59; 




[spriteSheet addChild:images]; 

[images runAction:standByAtion]; 

if (!isInInitMethod && isTalking==NO) { 
    NSString *audioName=[NSString stringWithFormat:@"Jump.caf"]; 
    [self playSoundEffectNamed:audioName]; 
} 
} 
+0

觀察fps,如果它下降,那麼你做錯了什麼。也許分配一次又一次。 – 2012-02-22 10:02:30

+1

你是否一次又一次地調用該方法?如果是這樣,您將分配所有這些對象並加載所有動畫幀太多次。你應該在你的init中做這件事(例如),然後在需要動畫的時候設置動畫。 – 2012-02-22 11:30:26

回答

0

如果runloop沒有運行一個完整的週期,那麼自動釋放對象沒有得到釋放。使用工具並跟蹤您的分配。