control memory management about sprite in cocos2dx
coocs2dx is a c++.
so we have to controll memory management.
When I craete scene.
I use memory
And how I can control it?
create a class witch extends Layer
I hold this class member in a Scene
Player.hpp class is like this.
#ifndef Player_hpp #define Player_hpp #includeclass Player : public cocos2d::Sprite{ Player(); virtual ~Player(); public: // 生成メソッド static Player* create(); }; #endif /* Player_hpp */
Player.cpp is this
#include "Player.hpp"
// using name space
USING_NS_CC;
Player::Player()
{
}
Player::~Player()
{
}
Player* Player::create(){
auto player = new Player();
if(player && player->initWithFile("HelloWorld.png")){
player->autorelease();
return player;
}
CC_SAFE_DELETE(player);
return nullptr;
}
and mainscene.
In this case HelloWorldScene.cpp
// add Player
{
// mPlayer is a member
mPlayer = Player::create();
// this will retain object + 1 in node
this->addChild(mPlayer);
}
In create method
if(player && player->initWithFile("HelloWorld.png")){
// this sprite is auto released
player->autorelease();
return player;
}
player->autorelease();
this able to make auto release object.
In the mainScene.
// mPlayer is a member mPlayer = Player::create(); // this will retain object + 1 in node this->addChild(mPlayer);
when add node object.
like objective-c reference count + 1
and before I comfirm autorelease so when this class not is refered.
This class is released and count - 1
like this we maintain memory in cocos2dx.