I have a Game Character with N parts animated. To make it work, I follow the next steps:
1º Create Object
2º Call N times function addpart()
3º Set Movement
The problem is that a error box appear each new Object is created, one for each part that I am adding.
The function addpart() is :
// Create Animation CCAnimation *animation = this->loadPlistForAnimationWithName(initialAnimation, "animationsCharacters.plist"); animation->retain(); // +1 retain // Create Sprite Part with Animation CCSprite *spritePart = CCSprite::createWithSpriteFrameName(initialImage); spritePart->runAction(CCRepeatForever::create(CCAnimate::create(animation))); spritePart->setAnchorPoint(anchor); spritePart->setPosition(ccpAdd(spritePart->getPosition(), offset)); //spritePart->retain(); // I try to use this line to correct the problem, but it don 't work // Store info of this character part in Array of parts CharacterPart *part = this->makeCharacterPart(part, offset, initialImage, spritePart, initialAnimation, animation); this->addChild(spritePart,z); partsArray->addObject((CCObject *)part); // RETAIN BOX APPEAR HERE!
makeCharacterPart just store in a struct the info that I want to Store.
If I comment last 3 lines, the box don’t appear, but I want to store the info to change animations between states, etc.
It work fine in iOS, and work propertly on Android, but the assert error appear all time.
The error is:
Assert Error, CCObject.cpp function retain line:86
I assume that I using retain more times that I need, or less times, but I don’t know what is going on.
I already have read: http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Memory_Management_in_Cocos2d-x But I don’t understand what is going on.
Some ideas? Any explanation why this issue occurs and what I must consider to manage animated objects?
Thanks in advance.