开发者

Warning: Received memory warning. Level=1 & 2

I am making application which is crashing giving the above warning in console.

There are two sprites.

  Train=[CCSprite spriteWithFile:@"train.png"];
    [self addChild:train z:0 tag:1];

  AlphaImage=[CCSprite node];
    AlphaImage.position=ccp(245,155);
    [Train addChild:AlphaImage z:1 tag:2];

In other method I am in开发者_如何转开发itializing AlphaImage using animation.

CCSpriteFrameCache *frameCache1 =[CCSpriteFrameCache sharedSpriteFrameCache];   
[frameCache1    addSpriteFramesWithFile:plist1];                                
CCSpriteBatchNode *danceSheet1 = [CCSpriteBatchNode batchNodeWithFile:png1];    
[self addChild:danceSheet1];                                

NSMutableArray *animFrames1 = [NSMutableArray arrayWithCapacity:frame[x]];      
for(int i = 1; i < frame[x]+1; i++) {
    NSString *namef1=[NSString stringWithFormat:@"%@%i.png",alpha1,i];              
    CCSpriteFrame *frame1 = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:namef1];   


    [animFrames1 addObject:frame1];
}

CCAnimation *anim1 = [CCAnimation animationWithFrames:animFrames1 delay:0.3f]; 
CCAnimate *animN1 = [CCAnimate actionWithAnimation:anim1];                      
CCRepeatForever *repeat1 = [CCRepeatForever actionWithAction:animN1];                   
[AlphaImage runAction:repeat1];     

I have used zwoptex to create plist and Texture atlas.

As train goes and comes back the plist and Texture atlas for animation changes. But after 4 or 5 times application is crashing. I have also deallcated all frames and texture before new animation comes to AlphaImage.i have used this:

[CCSpriteFrameCache purgeSharedSpriteFrameCache];  
[CCTextureCache purgeSharedTextureCache];   

I am using hd images for the application.I have gone through many documents, they have suggested these:

[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];

But in console it is not showing anything about removal of frames using these lines. Is there something that I am doing wrong?


Where are you running [[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames]; this statement run it background thread using performSelectorInBackground method of NSObject.


Try to release an array after animation ends.

//This may be the reason.

[animFrames1 release];
animFrames1 = nil;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜