1. 动做类:函数
CAction : CActionInterval(持续性) 和 CActionInstant(瞬时性)动画
帧动画 CAnimate, 帧动画序列 CAnimationspa
2. Cocos2dx 中全部对象都建立在堆上,而后经过指针引用;指针
建立方法:code
1) new 对象 -> init方法, 须要使用者进行释放;对象
2)静态的工厂方法,不须要使用者进行释放;blog
3. 选择器 selector, 相似于函数指针内存
shedule_selector(SELECTOR)资源
callfunc_selector(SELECTOR)string
menu_selector(SELECTOR)
4. 属性
CC_SYNTHESIZE(int, tag, Tag)
注意,若是属性类型是对象,须要写成指针的形式
相关宏, CC_SYNTHESIZE, CC_SYNTHESIZE_READONLY, ...
5. 内存管理
retain() 引用加1;
release() 引用减1;
autorelease() 将对象放入自动回收池,当对象回收池自身被释放时,它当中全部的对象都 release()一次;
每一帧开始时,建立一个新的回收池;
每一帧结束时,回收池中的对象都会被释放一次
工厂方法:
CCObject* factorMethod() { CCObject* ret = new CCObject() //这里对对象进行必要的初始化 //... ret->autorelease() return ret }
autorelease()很耗资源,应该尽可能使用release(),只有在工厂方法等不得已的状况才使用 autorelease()
6. 使用CCArray和CCDictory, 由于它们在释放时会调用release()
因此,尽可能用这二者,不要使用STL
7. 使用内存相关宏, 等等
CC_SAFE_RETAIN
CC_SAFE_DELETE
CC_SAFE_FREE
CC_SAFE_RELEASE
8. 函数跟踪
class LifeCircleLogger{ string m_msg; public: LifeCircleLogger(){} LifeCircleLogger(const string& msg):m_msg(msg){ CCLog("%s BEGINS!",m_msg.c_str());} ~LifeCircleLogger(){CCLog("%s ENDS!",m_msg.c_str());} }; #define LOG_FUNCTION_LIFE LifeCircleLogger(__FUNCTION__);
9