cocos2dx 學習筆記

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

相關文章
相關標籤/搜索