真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Cocos2dx介紹優(yōu)化內(nèi)存的應(yīng)用-創(chuàng)新互聯(lián)

藍鷗iOS培訓(xùn)講師推薦:最火的一款引擎Cocos2dx,但是有關(guān)它的培訓(xùn),目前還有很少的機構(gòu)做這方面,如果你想了解更多的內(nèi)容,可以去網(wǎng)上多搜一些這方面的知識,看看誰可以幫助到你。

蘭考ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

和大家簡單的說一下有關(guān)如何優(yōu)化內(nèi)存的應(yīng)用的問題,有可能有出入!

一、iOS與圖片內(nèi)存

在iOS上,圖片會被積極縮放到2的N次方大小。如一張1024*1025的圖片,占用的內(nèi)存與一張1024*2048的圖片是一樣的。圖片占用內(nèi)存大小的共計的公式是;長*寬*4。何等一張512*512 占用的內(nèi)存即是 512*512*4 = 1M。其他尺寸以此類推。

二、Cocos2d-x 的圖片緩存

Cocos2d-x 在機關(guān)一個精靈的時辰會運用spriteWithFile或者spriteWithSpriteFrameName等 豈論用哪類方式,cocos2d-x都會將這張圖片加載到緩存中。若是是第一次加載這個圖片,那就會先將這張圖片加載到緩存,往后從緩存讀取。假如緩存中已經(jīng)存在,則直接從緩存中提取,免去了加載進程。

圖片的緩存主要由下列兩個類來措置:CCSpriteFrameCache, CCTextureCache

CCSpriteFrameCache加載的是一張拼接過的大圖,每個小圖只不過大圖中的一個地域,這些地域信息都在plist文件中生存。用的時辰只重要根據(jù)小圖的稱號便可以加載到這個區(qū)域。

CCTextureCache 是尋常的圖片緩存,我們所有直接加載的圖片都會默許放到這個緩存中,以行進挪用聽從。

因而,每次加載一張圖片,或者顛末plist加載一張拼接圖時,都會將整張圖片加載到內(nèi)存中。假設(shè)不去監(jiān)禁,那就會一直占用著。

三、渲染內(nèi)存

不要認(rèn)為,合計內(nèi)存時,只算計加載到緩存中的內(nèi)存便可以了。以一張1024*1024的圖片為例。

CCSprite *pSprite = CCSprite::spriteWithFile("a.png");

挪用上邊這行代碼之后,可以在LEAKS東西中看到,增多了大概4M的內(nèi)存。而后接著調(diào)用addChild(pSprite); 這時,內(nèi)存又增進了4M。也便是,一張圖片,若是必要渲染的話,那它所占用的內(nèi)存將要X2。

再看看經(jīng)過plist加載的圖片,例如這張大圖尺寸為2048*2048。想要加載此中的一張32*32的小圖片

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("b.plist");

此時內(nèi)存增加16MCCSprite *pSpriteFrame = CCSprite::spriteWithSpriteFrameName("b1.png");

b.png 大小為32*32 ,想著也便是增進一點點內(nèi)存,可實踐情況是增長16M內(nèi)存。也就是只有渲染了此中的一局部,那末整張圖片都要一塊兒被加載。

但是環(huán)境不是那末的糟糕,這些曾經(jīng)渲染的圖片,假定再次加載的話,內(nèi)存是不會再持續(xù)抬高的,比方又添加了100個b.plist的另一個區(qū)域,圖片內(nèi)存照舊共增加16+16 = 32M,而不會繼續(xù)上升。

四、內(nèi)存優(yōu)化

優(yōu)化的心得等于只管即便去拼接圖片,使圖片邊長盡可能的保持2的N次方?jīng)r且裝的很滿。但要寄望,有邏輯相干的圖片只管即便打包在一張大圖里,其他一點就是打包的時辰要思考到層的漫衍。由于為了渲染依順可能會用到CCSpriteBatchNode;對立個BatchNode里的圖片凡是位于一個層級的,是以必須根據(jù)各個圖片的層級關(guān)系,打包到不合的plist里。偶爾內(nèi)存與依順不成以兼得,只能只管即便失調(diào)了。

五、緩存禁錮

假定游戲有不少場景,在切換場景的時刻可以把前一個場景的內(nèi)存所有開釋,預(yù)防總內(nèi)存過高.

CCTextureCache::sharedTextureCache()->removeAllTextures(); 拘留到今朝為止所有加載的圖片

CCTextureCache::sharedTextureCache()->removeUnusedTextures(); 將引用計數(shù)為1的圖片開釋掉

CCTextureCache::sharedTextureCache()->removeTexture(); 單獨囚系某個圖片

CCSpriteFrameCache 與 CCTextureCache 監(jiān)禁的門徑差不久不多。

值得留神的是扣留的機緣,多在切換場景的時刻禁錮資本,假定從A場景切換到B場景,調(diào)用的函數(shù)順序為B::init()---->A::exit()---->B::onEnter() 。

可若是使用了切換效果,譬如CTransitionJumpZoom::transitionWithDuration這樣的函數(shù),則函數(shù)的挪用順序釀成B::init()---->B::onEnter()---->A::exit() 。

而且第二種方式會有一剎時將兩個場景的利潤疊加在一起,若是不采用偏激,很可能會由于內(nèi)存短促而瓦解。

無心強逼監(jiān)管悉數(shù)資源時,會使某個正在履行的動畫取得引用而彈出異常,可以挪用

CCActionManager::sharedManager()->removeAllActions();來解決。

目前想到的也就這么多,如果有其它的內(nèi)容,想到的話,我會隨時補上來,向大家說明,現(xiàn)在也就這么多!希望能夠?qū)Υ蠹矣袔椭?,有問題的話,隨時溝通!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站名稱:Cocos2dx介紹優(yōu)化內(nèi)存的應(yīng)用-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/dopjsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部