天天看點

【遊戲開發備注之一】關于COCOS2DX_V1.X版本IPHONE與ANDROID運作出現圖檔白塊、添加GAMECENTER報錯問題及編譯ANDROID閃退的解決辦法&&CCLOG與CCLOG的差別

今天備注幾個童鞋們可能會遇到的問題:

1. 關于cocos2dx v1.x版本運作在iphone與android平台出現圖檔變白塊,尺寸一樣。圖檔純白問題。

之前出現此問題原因如下:

1.1  ccsprite與ccnode強轉之間的問題造成;

1.2  pvr.ccz的資源大小寬高不是正方形的話(2 的n次幂)

解決方案,之前himi給出方法了,這個問題請看之前的博文:

<a href="http://www.himigame.com/iphone-cocos2dx/703.html">【ios-cocos2d-x 遊戲開發之十一】new ccsprite()帶來的錯誤&amp;使用ccuserdefault及pvr.ccz在cocos2dx中要注意!</a>

 今天講解另外一個造成此問題的原因:

原因引擎的粒子系統,當使用粒子系統後,控制台給出警告:

opengl error 0x0500 in -[eaglview swapbuffers]

就因為這個問題會造成在打包好的圖檔白塊化,實出的機型:android平台m9,ios:iphone 4.3.3

關于 這個錯誤的談論文章如下連結:

<a href="http://www.cocos2d-x.org/boards/6/topics/7557?r=19039#message-19039" target="_blank">http://www.cocos2d-x.org/boards/6/topics/7557?r=19039#message-19039</a>

2.   himi在cocos2dx 1.x版本運作在ios6中調用gamecenter相關函數,出現如下錯誤:

(備注:此問題不僅僅使用gamecenter,ios6中其它也會遇到)

1

terminating app due to uncaught exception 'uiapplicationinvalidinterfaceorientation', reason: 'supported orientations has no common orientation with the application, and shouldautorotate is returning yes'

解決方案如下:

在調用使用gamecenter的 view controller(報錯的 view controller類)中添加如下三個函數即可:

– (bool)shouldautorotatetointerfaceorientation:(uiinterfaceorientation)interfaceorientation

{

return (interfaceorientation == uiinterfaceorientationlandscapeleft || interfaceorientation == uiinterfaceorientationlandscaperight );

}

-(nsuinteger)supportedinterfaceorientations{

return uiinterfaceorientationmasklandscape;

– (bool)shouldautorotate

return yes;

cocos2dx 一般對于ios平台級别的元件進行使用時,都預設寫在cocos2dx項目下的ios檔案夾下的appcontroller.h/mm 中的。當然你也可以自己定義mm混編類。

3. 第三個問題就是關于cocos2dx 1.x 版本編譯android 一個造成閃退的原因。

對于這個問題出現的種類很多(但是你如果書寫代碼規範基本沒有任何問題),這裡himi給個遇到驗證過的問題吧。

himi 在cocos2dx項目中xcode書寫代碼有如下兩個類,繼承關系如下:

hclassa:public ccsprte

hclassb:public hclassa

如果你強制将hclassa類型強制轉給hclassb對象會造成android閃退的問題!!!!

雖然這種父類強轉子類在java中可以行得通,在ios運作沒有問題,但是!當編譯到android的時候就會出現100%閃退的現象。

關于ndk編譯到android後的調試列印cclog與cclog問題這裡簡單說下:

之前很多童鞋問我,為什麼使用cclog在android不列印,咳咳、童鞋們可以點選進入cclog的定義,它在正式編譯後自動取消不打入代碼中的,而cclog則不是,是以我們想在android進行列印觀察,那麼請使用cclog 。

繼續閱讀