天天看點

Cocos2D中使用CCDrawNode繪制幾何圖形崩潰的解決

在cocos2d v3.x中已經不能像在v2.x中那樣直接調用ccdrawxxx函數來繪制幾何圖形了.

我們可以使用ccdrawnode或者ccrenderer來繪制圖形.

但是官方的api手冊中說的很清楚,ccdrawnode隻推薦放在遊戲的調試中調用,因為改變其狀态必須先删除再重新添加,導緻在繪制大量複雜幾何圖形時性能會很差.

在cocos2d v2.x中直接調用opengl的繪制一般放在draw方法中,但是在v3.4中實際測試發現,将ccdrawnode的繪制放在draw會導緻app崩潰,錯誤大意為不能在周遊數組時改變其中的元素狀态.

我推測是因為在draw中會周遊其中的可繪制節點,其中就包括了我們添加的ccdrawnode,然而在draw中我們修改了ccdrawnode的狀态,是以app會崩潰.

換一種方法,将ccdrawnode的繪制放在update中即可.

當然,這樣做隻是在繪制節點會随着遊戲狀态發生改變時才有必要,如果繪制的節點永遠不發生變化,直接放到類執行個體的初始化中就可以了.

繼續閱讀