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