1.使用自动适配的HD模式,没法加载资源
再现方法: 开启HD适配 pDirector->enableRetinaDisplay(true);
提供了HD资源,但没有提供SD资源,例如:提供了XXXX-hd.png,但没有提供普通的XXXX.png。 注意该错误复现率不稳定,必须删除手机中的软件,并且clean项目后才有高几率复现。
现象: 在HD手机上加载资源失败,游戏直接卡死
分析: 调试发现fullPathFromRelativePath没法获得正确的路径 只是直接返回了传参给他的文件名
结论: 必须同时提供HD和SD两套图
2.CCMenu自动适配界面错乱
再现方法: 使用CCMenu的自动布局函数,适配临时资源图片,然后换用了 更大的图片资源
现象: item按钮位置互相叠加
分析: cocos2d-x的CCMenu有一些很方便 的自动布局函数,如 alignItems XXX等,在资源图片足够小的时候,使用这些函数没有关系,如果图片大,在适配时很可能出现位置 重叠. 结论:
不怕麻烦的话,手动控制布局最好
3.XCode4.2,iTouch2 4.21系统,完全默认配置,建hello world,5.01的touch4能跑,4.21的touch2跑不了 再现方法:
在XCode4.2下,用cocos2d-x模版建立helloworld,插上touch2后,点run,编译成功,但是手机上没有任何反应
现象:
手机没有任何反应,控制台也没有输出,在设备控制台上,会有类似下面内容:unknown lockdownd[16] <Error>: 2ff68000 handle_connection: Could not receive USB message #6 from Xcode. Killing connection
分析:
老版iOS,主要指5.x之前,和5.x的编译参数不同,主要是armv6和armv7的区别,首先按照这个帖子检查自己的设置:
http://stackoverflow.com/questions/6378228/switching-from-xcode3-to-xcode4-cant-load-programs-onto-older-ipod-touch
确认无误后,在building setting里面的Architectures中,添加参数armv6
结论:
最好每个项目在新建时都如此添加,防止忘记
4.如何禁止iOS屏幕自动旋转 在重力感应游戏中,经常会造成屏幕自动旋转的情况,这样会造成屏幕倒置,对操作造成不便,禁止重力感应的方法是:
在“项目/ios/RootViewController.mm”中,找到如下函数- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // return UIInterfaceOrientationIsLandscape( interfaceOrientation ); return interfaceOrientation == UIInterfaceOrientationPortrait; //填写你需要锁定的方向参数 // switch to this line if you want to set portrait view // return UIInterfaceOrientationIsPortrait( interfaceOrientation ); }
感谢6群的朋友提供这个方法,我之前知道一个修改引擎源码的方法,这个不用改引擎源码,只改项目代码。