cocos creator cc.NodePool

使用對象池回收某個節點下的所有子節點
開始這麼寫的

日誌顯示只回收了一半,請教了各路大神

換成for循環,還是有問題

經過各路大神的知道,終於知道要這麼寫
方法1:使用for循環,從length-1,開始

方法2:使用while(parentNode.childrenCount>0)

使用put()方法爲啥會有這個問題???

打開引擎源碼學習學習,

// Invoke pool handler

試了試直接調用removeFromParent(false);
日誌出現了同樣的問題,繼續看看removeFromParent是如何實現的

最終,在removeChild方法發現,直接設置當前節點的父節點爲空。

update裏面打印子節點的數量,證明是在remove是在一幀處理完成的。

推測原因:當父節點的第一個子節點移除,後續子節點會依次向前排列。也就造成了看到的第一次的情況,節點下面有6個子節點,分別是name0到name5,當name0被移除,name1的位置變成第一個,name2變成第二個,循環的第二次被移除的是位置2的節點,也就是name2,產生了間隔一個移除一個的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章