日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > codeigniter > cocos2d 緩存池 對象重復(fù)使用

cocos2d 緩存池 對象重復(fù)使用

來源:程序員人生   發(fā)布時間:2014-10-08 11:11:28 閱讀次數(shù):3849次

1.緩沖池簡單描述


我們知道一個游戲比如跑酷類型的游戲,游戲元素會不斷重復(fù)。游戲元素會不斷從屏幕右邊創(chuàng)建出來,當(dāng)一個元素移出左邊屏幕時,又會消失掉。如果不斷地new 對象,release 對象 會有性能影響。如何優(yōu)化呢?就涉及到緩存池的概念。


再舉一個例子:一個主角在一個競技場中不斷殺怪。每次有5個怪出現(xiàn),殺死一個又會出來一個。每次出怪就new 怪,死亡怪就release怪,會很浪費的。已經(jīng)死亡的怪,我們簡單地給他補滿血不就可以重復(fù)使用了嘛!像拍電影,一個人不是真正死亡,只是看起來死了,還是可以重復(fù)使用的嘛!


2.緩存池簡單實現(xiàn)


我們可以事先new10個怪放入到一個數(shù)組中,簡單把這個數(shù)組稱作緩存池,其實就是一個數(shù)組。再搞個int的變量表示取數(shù)組中第幾個怪,初始化為0,表示取第一個怪。

1.當(dāng)我們想要從屏幕中創(chuàng)建一個新怪時,不去new,而是用那個int變量從數(shù)組中取一個怪拿來用,當(dāng)然拿來用之后,還要簡單的初始化下,給他補滿血啊,穿上完整衣服等等。再把int變量加1,如果int變量等于數(shù)組的長度時,把它歸0。

2.當(dāng)一個怪被主角殺死時,讓這怪播完死亡動畫后,就remove掉,但不把他完全release掉。

差不多實現(xiàn)就是這樣,簡單吧!只是注意初始緩存池,new對象的數(shù)量。一般要大于你實際使用的數(shù)量。


3.簡單代碼


//創(chuàng)建緩存池 Vector bonePools; void createBonePools(){ if(bonePools.empty()){ for(int i = 0; i < 30; ++i){ auto oneBone = Bone::create(); bonePools.pushBack(oneBone); } } }

//從緩存池中取一個對象 int _boneIndex; Bone* getOneBone(){ if(_boneIndex == bonePools.size()){ _boneIndex = 0; } Bone* result = bonePools.at(_boneIndex); result->reuseInit();//這個比較重要,重復(fù)使用一個元素也要簡單初始化一些東西的,之前死亡的人物記得給他補滿血  ++_boneIndex; return result; }


cocos2d 緩存池 對象重復(fù)使用

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 91精品久久久久久久久久 | 99免费精品 | 午夜视频成人 | 一区二区久久久久 | 久热久热| 亚洲精品99久久久久中文字幕 | 成人免费视频一区二区 | 自拍偷拍福利视频 | 99re在线观看| 日韩精品 电影一区 亚洲 | 国产精品免费电影 | 成人一区二区三区 | 亚洲欧美日韩另类精品一区二区三区 | 国产精品一区二区三区久久久 | 久久久久久国产精品免费免费 | 日本在线观看一区二区 | 国产精品国产三级国产三级人妇 | 三级av毛片 | 欧美精品系列 | 伦视频 | 久久国 | 国产中文字幕精品 | 岛国免费视频 | 在线观看成人av | 日韩激情一区二区 | av无遮挡| 91直接看 | 成人av毛片 | 国产成人av一区二区三区在线观看 | 最近中文字幕一区二区 | 蜜桃精品久久久久久久免费影院 | 狠狠干天天操 | 麻豆精品久久 | 国产免费久久 | 在线一区 | 欧美精品一区二区视频 | 国产视频导航 | 99精品视频在线观看 | 欧美日韩色 | 免费看国产片在线观看 | 久久久精选 |