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];
}
}
觀察fps,如果它下降,那麼你做錯了什麼。也許分配一次又一次。 – 2012-02-22 10:02:30
你是否一次又一次地調用該方法?如果是這樣,您將分配所有這些對象並加載所有動畫幀太多次。你應該在你的init中做這件事(例如),然後在需要動畫的時候設置動畫。 – 2012-02-22 11:30:26