cocos2d-x 自建动画管理器AnimationManager的方法和使用

第一步:首先定义一个单例的父类。

#ifndef _SINGLETON_H
#define _SINGLETON_H

template <class T>
class Singleton
{
public:
	//获取类的唯一实例
	static inline T* instance();
	//释放类的唯一实例
	void release();
protected:
	Singleton(void){}
	~Singleton(void){}
	static T* _instance;
};

template <class T>
inline T* Singleton<T>::instance()
{
	if(!_instance)
		_instance = new T;
	return _instance;
}

template <class T>
void Singleton<T>::release()
{
	if (!_instance)
		return;
	delete _instance;
	_instance = 0;
}

//cpp文件中需要先声明静态变量
#define DECLARE_SINGLETON_MEMBER(_Ty)	\
	template <> _Ty* Singleton<_Ty>::_instance = NULL;

#endif//_SINGLETON_H

这个类,就是一个标准的单例父类,一些全局的数据保存可以继承这个类。

注意:

1.每个继承此类的子类,需要在子类的cpp文件开头上写

DECLARE_SINGLETON_MEMBER(子类的名字)
2.每个继承此类的子类,最好写上构造函数和析构函数,就算不写东西也要写上点,要不好像报错。

第二部:编写动画管理器AnimationManger类

上面的单例基类编写好了之后我们就要编写动画管理子类了,直接上代码:
#ifndef _ANIMATION_MANAGER_H_
#define _ANIMATION_MANAGER_H_

#include "cocos2d.h"
#include "Singleton.h"
#include "type.h"
using namespace cocos2d;

class AnimationManager : public Singleton<AnimationManager>
{
public:
	AnimationManager();
	~AnimationManager();
	//初始化动画模版缓存表
	bool initAnimationMap();
	//根据名字得到一个动画模板
	CCAnimation* getAnimation(int key);
	//创建一个动画实例
	CCAnimate* createAnimate(int key);
	//创建一个动画实例
	CCAnimate* createAnimate(const char* key);
	//清空所有缓存
	void releaseAllCacha();
protected:
	//加载勇士行走动画模版
	CCAnimation* createAnimationByDirection(HeroDirection direction);
};
//定义动画管理器实例的别名
#define sAnimationMgr AnimationManager::instance()

#endif




  • 0
    点赞
  • 3
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值