cocos2d增加1136*640图片支持
来源:互联网 发布:知乎网站的优缺点 编辑:程序博客网 时间:2024/06/03 16:01
概述
Cocos2d 通过给文件增加 -hd 后缀来支持 Retina 屏幕。目前 V2.1 Beta2 支持通过给 launch image 增加 -568h 后缀来支持 640×1136 分辨率的 4-Inch 屏幕,但是对于游戏中用到的普通图片还不支持自动加载 -568h 后缀的图片。
我们可以通过修改项目 libs 目录下的 ccType.h, Support/CCFileUtils.h, Support/CCFileUtils.m 几个文件使 Cocos2d 可以自动为 4-Inch 屏幕自动加载 -568h 后缀的图片。
修改过的这几个文件压缩包下载: Cocos2d-fourinch
修改 ccType.h 文件
打开ccType.h, 在 ccResolutionType 中增加 kCCResolutioniPhoneFourInchDisplay 。
//! ccResolutionTypetypedef enum{//! Unknown resolution typekCCResolutionUnknown,#ifdef __CC_PLATFORM_IOS//! iPhone resolution typekCCResolutioniPhone,//! RetinaDisplay resolution typekCCResolutioniPhoneRetinaDisplay, kCCResolutioniPhoneFourInchDisplay,//! iPad resolution typekCCResolutioniPad,//! iPad Retina Display resolution typekCCResolutioniPadRetinaDisplay,#elif defined(__CC_PLATFORM_MAC)//! Mac resolution typekCCResolutionMac,//! Mac RetinaDisplay resolution typekCCResolutionMacRetinaDisplay,#endif // platform} ccResolutionType;
修改 CCFileUtils.h 文件
- 在 CCFileUtil.h 中,在 {} 变量声明中增加 NSString *iPhoneFourInchDisplaySuffix_; 作为 4-inch 的后缀
#ifdef __CC_PLATFORM_IOSNSString *iPhoneRetinaDisplaySuffix_;NSString *iPadSuffix_;NSString *iPadRetinaDisplaySuffix_;NSString *iPhoneFourInchDisplaySuffix_;#elif defined(__CC_PLATFORM_MAC)NSString *macSuffix_;NSString *macRetinaDisplaySuffix_;#endif // __CC_PLATFORM_MAC
- 同时在 CCFileUtils.h 中增加 NSString *iPhoneFourInchDisplaySuffix 的 property 声明:
@property (nonatomic,readwrite, copy, setter = setiPhoneFourInchDisplaySuffix:) NSString *iPhoneFourInchDisplaySuffix;
- 在 CCFileUtils.h 中增加一个判断给定 4inch 文件是否在方法:
-(BOOL) iPhoneFourInchFileExistsAtPath:(NSString*)filename;
修改 CCFileUtils.m 文件
下面开始修改 CCFileUtils.m 文件:
- 在第一个 enum 中增加对 4-inch 的支持:
#ifdef __CC_PLATFORM_IOSenum {kCCiPhone,kCCiPhoneRetinaDisplay,kCCiPad,kCCiPadRetinaDisplay,// 4-Inch 支持kCCiPhoneFourInchDisplay,};#elif __CC_PLATFORM_MACenum {kCCMac,kCCMacRetinaDisplay,};#endif
- 增加对 iPhoneFourInchDisplaySuffix 的 synthesize:
#ifdef __CC_PLATFORM_IOS@synthesize iPhoneRetinaDisplaySuffix = iPhoneRetinaDisplaySuffix_;// 对 iPhoneFourInchDisplaySuffix 的 synthesize@synthesize iPhoneFourInchDisplaySuffix = iPhoneFourInchDisplaySuffix_;@synthesize iPadSuffix = iPadSuffix_;@synthesize iPadRetinaDisplaySuffix = iPadRetinaDisplaySuffix_;#elif defined(__CC_PLATFORM_MAC)@synthesize macSuffix = macSuffix_;@synthesize macRetinaDisplaySuffix = macRetinaDisplaySuffix_;#endif // __CC_PLATFORM_IOS
- 修改 init 方法,增加对 iPhoneFourInchDisplaySuffix_ 的赋值:
#ifdef __CC_PLATFORM_IOSiPhoneRetinaDisplaySuffix_ = @"-hd"; iPhoneFourInchDisplaySuffix_ = @"-568h";iPadSuffix_ = @"-ipad";iPadRetinaDisplaySuffix_ = @"-ipadhd";#elif defined(__CC_PLATFORM_MAC)macRetinaDisplaySuffix_ = @"-machd";macSuffix_ = @"-mac";#endif // __CC_PLATFORM_IOS
- 在 dealloc 中 release iPhoneFourInchDisplaySuffix_:
#ifdef __CC_PLATFORM_IOS[iPhoneRetinaDisplaySuffix_ release]; [iPhoneFourInchDisplaySuffix_ release]; [iPadSuffix_ release];[iPadRetinaDisplaySuffix_ release];#elif defined(__CC_PLATFORM_MAC)[macRetinaDisplaySuffix_ release];[macSuffix_ release];#endif // __CC_PLATFORM_MAC
- 修改 -(NSString*) fullPathFromRelativePath:(NSString*)relPath resolutionType:(ccResolutionType*)resolutionType 方法增加对 4-inch 的支持:
...// iPhone HD ?if( device == kCCiPhoneRetinaDisplay || (enableFallbackSuffixes_ && !ret) ) {ret = [self getPath:relPath forSuffix:iPhoneRetinaDisplaySuffix_];*resolutionType = kCCResolutioniPhoneRetinaDisplay;}// 4 Inch iPhone HD ?if( device == kCCiPhoneFourInchDisplay || (enableFallbackSuffixes_ && !ret) ) {ret = [self getPath:relPath forSuffix:iPhoneFourInchDisplaySuffix_];*resolutionType = kCCResolutioniPhoneFourInchDisplay;}// If it is not Phone HD, or if the previous "getPath" failed, then use iPhone images.if( device == kCCiPhone || !ret ){ret = [self getPath:relPath forSuffix:@""];*resolutionType = kCCResolutioniPhone;}...
- 修改 -(NSInteger) runningDevice 方法,增加对 4-inch iPhone 的判断:如果高度为568则认为是 4-inch iPhone 或 iPod Touch 5 代:
...else{ if ([[UIScreen mainScreen] bounds].size.height == 568) { ret = kCCiPhoneFourInchDisplay; }else if( CC_CONTENT_SCALE_FACTOR() == 2 )ret = kCCiPhoneRetinaDisplay;elseret = kCCiPhone;}...
- 修改 -(NSString*) removeSuffixFromFile:(NSString*) path 方法,增加对 kCCiPhoneFourInchDisplay 的支持:
...if( device == kCCiPhoneRetinaDisplay || (enableFallbackSuffixes_ && !ret) )ret = [self removeSuffix:iPhoneRetinaDisplaySuffix_ fromPath:path];if( device == kCCiPhoneFourInchDisplay || (enableFallbackSuffixes_ && !ret) )ret = [self removeSuffix:iPhoneFourInchDisplaySuffix_ fromPath:path];if( device == kCCiPhone || !ret )ret = path;...
- 最后,实现 -(BOOL) iPhoneFourInchFileExistsAtPath:(NSString*)path 方法
-(BOOL) iPhoneFourInchFileExistsAtPath:(NSString*)path{return [self fileExistsAtPath:path withSuffix:iPhoneFourInchDisplaySuffix_];}
修改过的这几个文件压缩包下载: Cocos2d-fourinch
- cocos2d增加1136*640图片支持
- 为Cocos2d-x项目增加lua支持
- 为cocos2d-x3.2版本增加protobuffer2.5.0支持
- 为cocos2d-x3.2版本增加protobuffer2.5.0支持
- 关于cocos2d对ETC1图片的支持
- sharepoint 2010 扩展调查字段属性(1)-增加图片支持
- sharepoint 2010 扩展调查字段属性(2)-增加图片支持
- 为OLED屏增加GUI支持5:图片控件
- 让 cocos2d 开发的程序支持不同分辨率的图片
- 关于cocos2d-x对etc1图片支持的分析
- 关于cocos2d-x对etc1图片支持的分析
- 关于cocos2d-x对etc1图片支持的分析
- 关于cocos2d-x对etc1图片支持的分析
- 关于cocos2d-x对etc1图片支持的分析
- 关于cocos2d-x对etc1图片支持的分析
- cocos2d-x编译到android平台后,增加返回键和菜单键的支持
- 给 Cocos2d 增加对 4 英寸屏幕的支持 (iPhone 5, iPod touch 5 代)
- Gmail增加POP3支持
- 百度面试经历
- Java 流中关于ObjectInputStream 和ObjectOutputStream 的陷进
- 即用即查实例参Linux命令行考
- jdbc连接池
- rvm安装1.8.7时遇到的问题
- cocos2d增加1136*640图片支持
- 10种排序算法
- zoj1203-Swordfish(prim实现)
- ado连接存储过程 --张国亮总结心得第一季
- sqlserver2005中全文索引的建立和使用
- 反编译
- 要進行全內核profiling, 需要至少每秒一萬次的單步
- 玩儿转C语言:整数及相关操作
- dedeCMS的几个简单的标签规则