在cocos2d-x中有建構函式,析構函式,init,onenter,onexit,他們的執行順序如何呢?
菜鳥的我進行了簡單的測試,借用helloworld工程來測試
//在helloworld.h中進行宣告和定義建構函式和析構函式
};class helloworld : public cocos2d::cclayer
~helloworld()
virtual void onenter()
virtual void onexit()virtual bool init()
//在helloworld.cpp中的scene方法進行順序除錯
ccscene* helloworld::scene()
while (0); // return the scene return scene;}
//程式結果
執行helloworld *layer = helloworld::create();
scene->addchild(layer);
結果為
scene()
helloworld()
init()
onenter()
執行
helloworld *layer = helloworld::create();
結果為
scene()
helloworld()
init()
~helloworld()
執行
helloworld *layer = new helloworld;
scene->addchild(layer);
結果為
scene()
helloworld()
onenter()
執行
helloworld *layer = new helloworld;
結果為
scene()
helloworld()
執行
結果為helloworld *layer = new helloworld;
scene->addchild(layer);
執行
scene()
helloworld()
onenter()
綜上所述呼叫create會執行new()->init()呼叫addchild會執行onenter()而執行new是會少執行一步init()onenter和onexit可以執行多次,但是init和建構函式,析構函式卻只能執行一次onexit會在場景退出的時候執行也就是執行replacescene()的時候析構函式在手動delete乙個ccobject物件會觸發析構函式**記憶體。或者在乙個ccobject區域性物件生命週期到了之後 cocos2d x 聲音,粒子,資料本地化
資料本地化 stl裡面的string a a.str c 可以轉換為char cocos2d裡面的是 string gettostring remove是吧乙個陣列中某乙個數刪除了,把這個數後面的所有數字都向前移一位。fastremove就是吧最後 乙個複製乙份填補到前面刪除的那乙個位置 xml檔案...
Cocos2d X中的聲音和音效
在玩遊戲時都會有各種遊戲音,如啟動遊戲時會有背景音,勝利或者失敗會有一些音效。在cocos2d x中能夠使用cocosdenshion實現各種聲音 在使用cocosdenshion之前須要在程式中加入乙個標頭檔案和乙個命名空間 include audioengine.h using namespac...
物件初始化器和集合初始化器
c 語言開發團隊在c 3.0中增加了乙個名為 物件初始化器 object initializer 的特性 它能初始化乙個物件中的所有允許訪問的字段和屬性。別以為這和你沒關係。我們先來看乙個你非常熟悉不過的 user operator new user operator.id 1 operator.p...