значения в cocos2d удалены между функциями - PullRequest
0 голосов
/ 17 июля 2011

эта тема похожа на другую, которую я написал, НО отличается . со мной в последнее время происходят странные вещи с кокосами, вещи просто удаляются.

У меня есть значение NSString в классе cocos2d, которое не равно nil внутри функции анимации. но когда анимация завершена, и она вызывает другую функцию, она становится нулевой в этой функции.

-(void)animation
{   
    // animation loops .....
    //......
    CCAnimate *Action = [CCAnimate actionWithAnimation:dollAnimation];
    //calling finish animation here :
    id call=[CCCallFunc actionWithTarget:self selector:@selector(finishAnimation)]; 
    id sequence=[CCSequence actions:Action,[CCHide action],call,nil];
    [dollSprite runAction:sequence];
    basic_pic=[rowInDataBase objectAtIndex:1] ;
    NSLog(@"%@",basic_pic); 
    // here basic_pic has a good value!
}


//when animation is done(3sec) it calls this :  
    -(void)finishAnimation
    {
       NSLog(@"%@",basic_pic);    // null ! ! !
       NSLog(@"%@",rowInDataBase);    // null ! ! !


    }

как это случилось ??? basic_pic это NSString без свойств сейчас. Я должен сказать, что basic_pic получает его значение в массиве frin за одну функцию до анимации, и когда анимация вызывается, она все еще там, но при следующем вызове функции завершения она исчезла!

Ответы [ 2 ]

2 голосов
/ 17 июля 2011

Вы retain ваши basic_pic и rowInDataBase? Если нет, то, скорее всего, это были автоматически выпущенные объекты, которые были освобождены после завершения текущего события UIKit.

0 голосов
/ 19 июля 2011

решена.

Если вы хотите заменить изображения спрайтов в cocos2d, вам лучше сделать это так:

CCTexture2D *texmex = [[CCTexture2D alloc] initWithImage:[UIImage imageNamed:basic_pic]];
    [b_pic setTexture: texmex];
    [texmex release];

и не так:

b_pic=[CCSprite spriteWithFile:basic_pic];
    b_pic.position=ccp(160,175);
    [self addChild:b_pic];

потому что тогда происходит сбой из-за утечек памяти. это сработало для меня, и, согласно документации Cocos, вот как вы это делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...