**首先创建一个缓存池管理类,这里以特效管理缓存池为例。**
.h文件如下
class EffectManager : public cocos2d::Ref{
public:
static EffectManager* getInstance();
bool init();
/**
* 销毁时遍历数组,调用每个实体的destory方法销毁每个物体
*/
void destroy();
/**
* 创建并播放一个特效
*
* @param pos 坐标
* @param layer 节点要加的父节点创建一个特效
*/
void playEffect(cocos2d::Point pos, cocos2d::Layer* layer);
private:
/**
* 直接从缓存(数组)中获取一个特效或者创建一个特效并加入缓存(数组)中
*
* @param pos 坐标
* @param layer 节点要加的父节点创建一个特效
* @return temp 对应的特效
*/
PlaneLine* getOrCreateEffect(cocos2d::Point pos, cocos2d::Layer* layer);
private:
static EffectManager* m_instance;
cocos2d::Vector<PlaneLine*> m_effectList;
};
.cpp文件如下
EffectManager* EffectManager::m_instance = NULL; // 将实例赋空
// 获取实例
EffectManager* EffectManager::getInstance(){
if (m_instance == NULL)
{
m_instance = new EffectManager();
if (m_instance && m_instance->init())
{
m_instance->retain();
}
else