不同的分辨率适配问题一直是移动应用开发领域的难题之一。在cocos2dx中,适配问题的解决办法如下:
最新的资源加载策略是使用CCFileUtils的setResourceDirectory设置的目录去寻找,如果找不到则会在Resources/目录下去查找。
例如:CCFileUtils()->setResourceDirectory("abc");
当创建一个精灵时:
CCSprite * spr = CCSprite::create("test.png");
Cocos2dx 首先会到Resource/abc下面去寻找图片test。png。如果找到了,就使用这张图片。如果没有找到就回到resouces目录下寻找它。
主要过程如下:
首先: 获取当前设备的类型,
然后:设置资源的路径名称。
代码如下:
TargetPlatform target = getTargetPlatform();
if(target == kTargetIpad)
{
CCFileUtils()->setResourceDirectory("xxx");
}else {
CCFileUtils()->setResourceDirectory("yyy");
}
TargetPlatform取值为:
kTargetWindows,
kTargetLinux,
kTargetMacOS,
kTargetAndroid,
kTargetIphone,
kTargetIpad,
kTargetBlackBerry,
注意:CCDirector::sharedDirector()->getWinSize();的方式根据其width判断是否为iphone5的话,那么千万注意(横屏距离):
你千万不要判断当前屏幕尺寸的 if(size.width==1136){/*是iphone5*/} (这种是错误的)
在iphone上只有480*320的尺寸,现在iphone5 则是 568*320 !!!
因此正确应该是:
if(size.width==568){/*是iphone5*/}
if(target == kTargetIphone)
{
Size size = CCDirector::sharedDirector()->getWinSize();
if(size.width==568){
CCFileUtils()->setResourceDirectory("iphone5directory");
} else{
CCFileUtils()->setResourceDirectory("iphonedirectory");
}
}
其他的方法见文章:
http://www.2cto.com/kf/201212/175527.html
或许会有更好的答案。