cocos2d-x 出錯集。

1、[vs2010, cocos2dx-2.0.4/2.1.x/xxx]Unable to start program以及新建不了cocos2dx項目(點新建項目框框的OK就立刻彈出原新建項目框)


       當Debug或Ctrl+F5運行出現如上錯誤時;


       解決:這是一個cocos2dx win32環境搭建環節出問題,所以我百度,找到這個帖子:http://blog.csdn.net/aa4790139/article/details/8086635,發現其中正文裏的“--->[補充在win32下創建自己的工程,爲了以後方便,也將此內容更新到此處~

第一步:運行InstallWizardForVS2010.js(我用的是vs2010,你選擇對應的,我的目錄如下:D:\work\cocos2d-x-2.0.1\template\msvc)]<---”

       我沒有做到,所以按這個步驟去做,後來就能無錯運行了;




2、[vs2010, cocos2dx-2.0.4]Assertion failed!(ccnode.cpp Line:536, child!=0)


       遇到這問題,仔細看其內容,發現是與ccnode.cpp中的第536行內容有關,其536行是addChild函數,結合其報錯內容:child!=0,可知道,報錯信息與代碼的addChild(,,,)函數有關,且是實參函數的問題。將報錯內容範圍縮小至此,再回去源代碼仔細閱讀,發現,自己的一處addChild()語句中的實參爲NULL,沒有初始化成功。


       故暫得如下結論:出現如上錯誤,則是addChild()語句中的實參爲NULL,沒有初始化成功。




3、[vs2012, cocos2dx-2.2.2]nptr != null

       這是空指針報錯,如果是按下某個按鈕出現這種,大多數是按鈕對象爲空指針了,可以進一步查看堆棧信息進而確定。我剛纔沒有往這方面去想,是因爲上一次調用還好好地,然後再調式一遍的時候就出錯了,原來是自己在SVN把UI資源給還原掉了。




4、[vs2012, cocos2dx-2.2.2]屏幕靜止不動,無報錯也無彈出對話框

死循環!遇這種情況,也多半是這樣。




5、[vs2012, cocos2dx-2.2.2]轉換場景幾次就報內存調用錯誤

       場景轉換幾次,就會報內存調用錯誤,打斷點進去看,是說其中一個控件指針爲空,找不到。後來細看,原來是有幾個控件指針對象沒有retain卻在所在的顯示類的析構函數處release(隨後便被delete掉)了,這是典型的內存泄露!retain和release(非delete)必須成對出現。BTW:時刻遵循MVC模式,V僅僅是顯示,任何讀取數據的運算能在M中運行就在M中運行,然後由C(中間件,C不是必須存在的)返回給V。





6、[vs2012, cocos2dx-2.2.2]child->m_pParent == 0

       這問題就是你被添加的節點在添加過後,會擁有兩個父類,即“兒子不可以同時又兩個父親”,在cocos2dx中,在listview中添加item元素是很正常的,但往往直接添加item(如button,img,sprite)會彈出框parent == 0(即你添加的節點的父類 !=0 ),所以,很多時候是用CCNode類自己new一個節點,將它作爲其他若干item的父節點。這裏就注意不要某一子節點對象連續作爲不同父類對象的子類(即作爲addchild()的參數)。

PS:網上有位同學說可以用removeFromParentAndCleanup將父類子類的關係解除,大家可以去試試。





7、utf8轉utf16問題(Button的setTileText無效

      問題起因是這樣的,ui::Button裏有個setTileText,我動態設置了按鈕的文本表現(中文字符),但是遊戲運行的時候發現並沒有改變,於是跟進去setTileText源碼去看,發現其_titleRenderer->setString(text);裏會將傳入的text轉爲utf16,而轉化成功的utf16纔是真正需要展示的成員變量,但是在StringUtils::UTF8ToUTF16的過程中就出錯了(返回targetExhausted錯誤)。後來查明原因,是原來設置中文字符的文件.cpp的文件編碼格式不對。

      說到這裏就是VS比較坑了,因爲我在VS裏是設置了utf8的編碼格式,但實則無效,我是在網上下了個轉碼工具再轉了一遍才成功的。



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