Memory management in iphone cocos2d

Posted by muthu on Stack Overflow See other posts from Stack Overflow or by muthu
Published on 2010-05-27T06:41:51Z Indexed on 2012/06/18 9:16 UTC
Read the original article Hit count: 236

Filed under:
|
|

i am iphone developer very new to this field....i am developing a ebook app in iphone using cocos2d...i use more than 150 images(i guess) the problem while turning from one page to another images get hanged randomly......

i tried this also [[TextureMgr sharedTextureMgr] removeAllTextures]; but went in vain...i guess the the problem is with the memory.....this my coding for all the pages

-(id)init
{
    if( (self=[super init] )) {
        self.isTouchEnabled = YES;
        [SimpleAudioEngine sharedEngine];
        NSLog(@"b4 cover");
        Sprite *bg1 = [Sprite spriteWithFile:@"a.jpg"];
        bg1.anchorPoint = CGPointZero;
        [self addChild:bg1 z:-1];
        once = TRUE;
        soundId = [[SimpleAudioEngine sharedEngine] playEffect:@".mp3"];
    }
    return self;
}

-(void) transitionfront:(id) sender
{
    [[SimpleAudioEngine sharedEngine] stopEffect:soundId];
    soundId1 = [[SimpleAudioEngine sharedEngine] playEffect:@"page_turn.mp3"];
    flip = [[Sprite spriteWithFile:@"a.jpg"] retain];
    [self addChild: flip z:1];
    [flip setPosition:ccp(160,240)];
    Animation* animation1 = [Animation animationWithName:@"Page1" delay:0.09];
    for( int i=1;i<4;i++)
        [animation1 addFrameWithFilename: [NSString stringWithFormat:@".jpg", i]];

    id action = [Animate actionWithAnimation: animation1];
    //id action = [RepeatForever actionWithAction:[Animate actionWithAnimation: animation1]]; 
    [flip runAction:action];
    [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(moveforward) userInfo:nil repeats:NO];
}

-(void) moveforward
{
    [[SimpleAudioEngine sharedEngine] stopEffect:soundId1];
    [[Director sharedDirector] replaceScene: [ [Scene node] addChild: [nextpage node] z:0] ];
}

-(void) transitionback:(id) sender
{
    [[SimpleAudioEngine sharedEngine] stopEffect:soundId];
    soundId1 = [[SimpleAudioEngine sharedEngine] playEffect:@".mp3"];

    flip = [[Sprite spriteWithFile:@".jpg"] retain];
    [self addChild: flip z:1];
    [flip setPosition:ccp(160,240)];
    Animation* animation1 = [Animation animationWithName:@"Page1" delay:0.09];
    for( int i=3;i>0;i--)
        [animation1 addFrameWithFilename: [NSString stringWithFormat:@".jpg", i]];

    id action = [Animate actionWithAnimation: animation1];
    //id action = [RepeatForever actionWithAction:[Animate actionWithAnimation: animation1]]; 
    [flip runAction:action];
    [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(movebackward) userInfo:nil repeats:NO];
}

-(void) movebackward{
    //[[SimpleAudioEngine sharedEngine]stopEffect:@".mp3"];
    [[Director sharedDirector]replaceScene:[[Scene node]addChild:[b4page node] z:0]];
}

-(void) glossary :(id) sender {
    [[SimpleAudioEngine sharedEngine]stopEffect:soundId];
    [[Director sharedDirector]replaceScene:[[Scene node]addChild:[ node] z:0]];
}

-(BOOL)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint cocosTouchPoint = [touch locationInView: [touch view]];
    CGPoint point = [[Director sharedDirector] convertToGL:cocosTouchPoint];

    NSLog(@"pointx: %f pointy:%f", point.x, point.y);

    // Was a tab touched, if so, which one...
    if (CGRectContainsPoint(CGRectMake(220, 0, 100, 70), point))
    {
        if(once)
        {
            NSLog(@"enterred page1");

            [self transitionfront:nil];
            once = FALSE;
        }
    }
    if (CGRectContainsPoint(CGRectMake(0,0,60,60), point))
    {
        if(once)
        {
            NSLog(@"enterred cover");

            [self transitionback:nil];
            once = FALSE;
        }
    }

    if (CGRectContainsPoint(CGRectMake(100, 15, 30, 30), point))
    {
        if(once){
            [self glossary :nil];
            once = FALSE;
        }
    }
    return kEventHandled;
}

-(void)playEffect:(NSString*)sound{
    if(effectPlayer!=nil){
        [effectPlayer release];
    }
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:sound ofType:@"mp3"]];
    effectPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    [effectPlayer setDelegate:self];

    [effectPlayer play];
}

-(void)stopEffect
{
    [effectPlayer stop];
}

-(void) dealloc{
    [super dealloc];
}

do pls help me........ do give me a exact coding

this is the err.....

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: aesop.mp3)'
2010-05-27 10:43:09.834 abc[276:20b] Stack: (
    11674715,
    2476006971,
    11758651,
    11758490,
    5126917,
    660698,
    660881,
    661061,
    131577,
    448857,
    120432,
    153433,
    630890,
    23694899,
    23603228,
    23630005,
    47120081,
    11459456,
    11455560,
    47114125,
    47114322,
    23633923,
    9928,
    9814
)

© Stack Overflow or respective owner

Related posts about ios

Related posts about cocos2d-iphone