大佬教程收集整理的这篇文章主要介绍了cocos2d-x 完美适配iphone、ipad(包括retina模式),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢!
项目中需要同时适配iphone和ipad。美术提供的iphone的图是640x960的,ipad的图是768x1024的。发布的时候,项目肯定会分开发布iphone版和ipad版,但是开发过程中,我需要看到ipad上的效果,所以开发过程中不可能分开。
联想到高低清可以用-hd后缀区分,我就想到将所有ipad的768x1024图后面全部加-ipad后缀,程序中在ipad上就让它加载-ipad后缀的图。
现在来看看我的实现:(主要模仿的-hd的实现方式)
1、首先宏定义 -ipad
找到libs/cocos2dx/include/ccConfig.h,加入宏定义代码:
#ifndef CC_IPAD_DISPLAY_FILename_SUFFIX
#define CC_IPAD_DISPLAY_FILename_SUFFIX "-ipad"
#endif
2、修改底层读取文件的地方,如果是ipad设备就添加后缀-ipad
打开libs/cocos2dx/platform/ios/CCFileUtils_ios.mm文件
static const char *static_ccRemoveHDSuffixFromFile( const char *pszPath){
#if CC_IS_RETinA_DISPLAY_SUPPORTED
if(cocos2d::CC_CONTENT_SCALE_FACTOR() == 2 ) {
//........
}
//这里添加下面的代码:支持ipad图片 ------开始--------
if( UI_user_iNTERFACE_I@L_446_15@m() ==UIUserInterfaceI@L_446_15@mPad){
NSString *path = [NSString StringWithUTF8String: pszPath];
NSString *name = [path lastPathComponent];
NSString *suffix = [NSString StringWithUTF8String: CC_IPAD_DISPLAY_FILename_SUFFIX];
// check if path already has the suffix.
if( [name rangeOfString: suffix].LOCATIOn != NsnotFound ) {
CCLOG("cocos2d: Filename(%@) contains %@ suffix. Removing it. See cocos2d issue #1040",path,CC_RETinA_DISPLAY_FILename_SUFFIX);
NSString *newLastname = [name StringByreplacingoccurrencesOfString: suffix withString:@""];
NSString *pathWithoutLastname = [path StringBydeletingLastPathComponent];
return [[pathWithoutLastname StringByAppendingPathComponent:newLastname] UTF8String];
}
}
#endif // CC_IS_RETinA_DISPLAY_SUPPORTED
};
static NSString* getDoubleResolutionImage(NSString* path)
#if CC_IS_RETinA_DISPLAY_SUPPORTED
if( cocos2d::CC_CONTENT_SCALE_FACTOR() == 2 )
//.......
}
//这里添加支持ipad图片。--------开始----------
if( UI_user_iNTERFACE_I@L_446_15@m() ==UIUserInterfaceI@L_446_15@mPad )
NSString *pathWithoutExtension = [path StringBydeletingPathExtension];
NSString *name = [pathWithoutExtension lastPathComponent];
NSString *suffix = [NSString StringWithUTF8String: CC_IPAD_DISPLAY_FILename_SUFFIX];
// check if path already has the suffix.
if( [name rangeOfString: suffix].LOCATIOn != NsnotFound ) {
CCLOG("cocos2d: WARNING Filename(%@) already has the suffix %@. Using it.",name,CC_RETinA_DISPLAY_FILename_SUFFIX);
return path;
}
NSString *extension = [path pathExtension];
if( [extension isEqualToString:@"ccz"] || [extension isEqualToString:@"gz"] )
// All ccz / gz files should be in the format filename.xxx.ccz
// so we need to pull off the .xxx part of the extension as well
extension = [NSString StringWithFormat:@"%@.%@",[pathWithoutExtension pathExtension],extension];
pathWithoutExtension = [pathWithoutExtension StringBydeletingPathExtension];
}
NSString *reTinaName = [pathWithoutExtension StringByAppendingString: suffix];
reTinaName = [reTinaName StringByAppendingPathExtension:extension];
NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease];
if( [fileManager fileExistsAtPath:reTinaName] )
return reTinaName;
CCLOG("cocos2d: CCFileUtils: Warning HD file not found: %@",[reTinaName lastPathComponent] );
}
//这里添加支持ipad图片。--------结束----------
#endif // CC_IS_RETinA_DISPLAY_SUPPORTED
return path;
}
以上是大佬教程为你收集整理的cocos2d-x 完美适配iphone、ipad(包括retina模式)全部内容,希望文章能够帮你解决cocos2d-x 完美适配iphone、ipad(包括retina模式)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。