每次建立乙個新的精靈都會帶來一定消耗,如果把之前刪除的精靈**到快取池,下次建立精靈時重複利用則省去這部分消耗。
var sushi=cc.sprite.
extend
(
reuse:
function()
, unuse :
function()
});判斷cc.pool是否有某個類
cc.pool.
hasobject
(targetclass)
放入和獲取
cc.pool.
putinpool
(instance)
cc.pool.
getfrompool
(poolsprite)
優化例項this.removefromparent();
cc.pool.putinpool(this);
在移除的時候,加入緩衝池
var sushi = cc.sprite.
extend(,
blink:
function()
;this
._animation.
setdelayperunit(1
/20);
//生成 action
this
.stopallactions()
;var action1 = cc.
animate
(this
._animation)
.repeat(1
);//函式動畫
var action2 = cc.
callfunc
(function()
; event.
setuserdata
(data)
; cc.eventmanager.
dispatchevent
(event);}
.bind
(this))
;var sequence = cc.
sequence
(action1, action2)
this
.runaction
(sequence);}
, reuse:
function()
, unuse:
function()
});sushi.
create
=function()
else
return
newsushi()
;}
使用環境:繪製方式為webgl有效,canvas方式無效
project.json配置:「rendermode」: 0
;示例**
var spritebatchscene = cc.scene.
extend(,
addsprite:
function()
},addsprite2:
function()}})
有些遊戲關卡,為了節省資源,通常會採用一些解決背景加配置裝飾物的方式生產背景效果,其自身和子節點在建立完畢後,就很少發生例如:新增、刪除、運動等,cocos-2d-為其定製渲染優化機制-圖層預烘焙
圖層預烘焙優化得益於cc.layer 最加的bake函式,乙個呼叫bake函式的層會將其自身以及所有的子節點烘焙到一張畫布(canvas),只要自身以及所有子節點不發生例如新增或刪除子節點,以及執行動作等變動行為,那麼在下一幀繪製時,引擎會將預烘焙到畫布上內容直接繪製出來。
使用環境:繪製方式為canvas,webgl方式無效
project.json配置:「rendermode」: 1,
var layer =
newcc.layer()
;layer.
bake()
;
var bakescene = cc.scene.
extend(,
addbg:
function()
layer.
bake()
;}})
cocos2d 優化記憶體使用
為優化應用記憶體使用,開發人員首先應該知道什麼最耗應用記憶體,答案就是紋理!紋理幾乎會佔據90 應用記憶體。所以盡量最小化應用的紋理記憶體使用,否則應用很有可能會因為低記憶體而崩潰。本文介紹cocos2d x遊戲通用的兩條記憶體優化原理指導。什麼樣的紋理最耗應用記憶體?或這些紋理會消耗多少記憶體?當...
cocos2d實現語音 Cocos2d 聲音API
param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...
Cocos2D研究院之初識Cocos2d(二)
在正式介紹cocos2d之前,我先囉嗦一下本人對這套引擎的看法。我認為coos2d最大的作用就是降低開發成本 貌似所有引擎都是這樣 對於研發部門來說,最大的成本就是時間,所以節省時間是降低成本最有效的方式,cocos2d幾乎封裝了所有開發ios遊戲需要的底層 使剛剛接觸oc的開發者也能很快的製作出效...