天天看點

【IOS-COCOS2D-X 遊戲開發之十五】COCOS2DX中響應ANDROID的BACK(傳回)與MENU(小房子)事件&&COCOS2DX自動釋放粒子記憶體函數!

本篇介紹兩個常用知識,一個是粒子的自動釋放機制函數,因為不少童鞋說cocos2dx為什麼沒有? 其實是沒找到,這裡特意拿出來說下!另外一個是如何響應android的menu菜單和back傳回事件的方法;

首先對于cocos2dx中對于粒子自動釋放的函數himi這裡給出,不少童鞋都在群裡或者論壇有問道!

1

2

3

4

5

6

//添加一個粒子特效

    ccparticlesystem *tempsystem =  arch_optimal_particle_system::particlewithfile("test.plist");

    //tempsystem.positiontype=kccpositiontyperelative;//備注1

    tempsystem->setpositiontype(kccpositiontypefree);

    this->addchild(tempsystem);

    tempsystem->setisautoremoveonfinish(true);//這裡就是粒子自動釋放的函數啦。~

這裡setisautoremoveonfinish(bool bl);函數就是自動釋放記憶體的函數啦,那麼這裡細心的童鞋會看到備注1 ,備注函數是設定粒子的移動類型為相對位置,具體請檢視:

<a href="http://www.himigame.com/iphone-cocos2d/472.html" target="_blank">【ios-cocos2d遊戲開發之十】添加粒子系統特效并解決粒子特效與layer之間的坐标問題;</a>

ok,下面himi介紹如何在cocos2dx中處理android os的裝置的menu和back案件的響應處理;

其實很簡單,步驟如下:

1. 在需要響應的.h 中添加如下兩個虛函數:

    virtual void keybackclicked();//android 傳回鍵

    virtual void keymenuclicked();//android 菜單鍵

2. .cpp類中實作如上兩個函數即可,如下,himi這裡測試使用,world是個layer

7

void world::keybackclicked(){

    cclog("android- keybackclicked!");

}

void world::keymenuclicked(){

    cclog("android- keymenuclicked!");

   3.初始化的時候記得開啟: this-&gt;setiskeypadenabled(true);

ok,下面himi将項目編譯後運作android版的項目:

運作結果如下:

【IOS-COCOS2D-X 遊戲開發之十五】COCOS2DX中響應ANDROID的BACK(傳回)與MENU(小房子)事件&amp;&amp;COCOS2DX自動釋放粒子記憶體函數!

然後himi嘗試點選menu和back按鍵,列印如上圖所示,正常處理到了;

繼續閱讀