cocos2dx的cache快取區

2021-10-25 10:21:43 字數 1683 閱讀 7532

director::getinstance()->gettexturecache()->addimage(filename)  // 存入

texture2d *texture = director::getinstance()->gettexturecache()->gettextureforkey(texturekeyname) // 使用

director::getinstance()->gettexturecache()->removeunusedtextures() // 清理沒被引用的

director::getinstance()->gettexturecache()->removealltextures() // 清理全部

spriteframecache *framecache = spriteframecache::getinstance() // 存入

framecache->addspriteframeswithfile("boy.plist", 具體某張圖) // 引數二可不填

auto frame_sp = sprite::createwithspriteframename("boy1.png") // 取出

spriteframecache::getinstance()->removeunusedspriteframes() // 清理沒用的

spriteframecache::getinstance()->removespriteframesfromfile(const std::string &plist) // 清理某plist

spriteframecache::getinstance()->removespriteframesfromtexture(cocos2d::texture2d *texture) // 清理某

animationcache:把像走路,奔跑等多次重複的動作載入進快取中

animationcache::getinstance():addanimation(animation *animation, const std::string& name) // 存入

animationcache::getinstance():getanimation(const std::string& name) // 取出

void removeanimation(const std::string& name) // 移除

他們的作用都是把/動作進行預載入,cache首先會對每種快取型別進行拆分成鍵值對(比如紋理則存紋理型別,精靈幀則存精靈幀型別,動畫則存動畫型別)

然後利用map容器(map是通過鍵值對的形式儲存資料)儲存之後,再次使用該資源時,就可從記憶體中直接取出,從而避免io造成的卡頓現象。

順帶一提的是,紋理快取和精靈幀快取之間的區別是如果精靈幀快取在快取區中找不到想要的時,它會報null,而texturecache則會在系統路徑中查詢該圖,精靈幀快取是基於紋理快取再進行的封裝。

出於安全角度,建議的釋放順序是:動畫快取 先於 精靈幀快取 先於 紋理快取

cocos2d x 資源集合

官網 主席子龍山人 archive 2011 08 08 2131019.html kmyhy的專欄 老g的小屋 cocos2d xtouch事件cocos2d 事件冒泡規律 和 ccmenu一直響應事件的解決辦法 swallow touches how to setmultipletouchena...

cocos2d x 開篇介紹

關於cocos2d x這一遊戲引擎,現在受到了手機遊戲開發者的青睞。其實cocos2d一開始是由於cocos2d iphone的成功,然後帶動各類開源專案越來越火。由蘋果獨家的objective c到了流行的c 支援了更多平台。cocos2d x中的 x 是什麼意識呢,其實其中包含著兩層含義 1 代...

Cocos2d x 常見巨集

1 ns cc begin cocos2d命名空間開始 2 ns cc end cocos2d命名空間結束 3 using ns cc 宣告cocos2d命名空間 4 cc synthesize readonly vartype,varname,funname 宣告乙個成員變數以及getfunnam...