ios老游戏更新 cocos2d-iphone 注意事项
2015-01-01 14:43
274 查看
之前用的是cocos2d-iphone 1.0.1, 现在为了升级x64不得不更新老引擎倒v2
支持x64的v2引擎:
http://forum.cocos2d-swift.org/t/cocos2d-iphone-2-1-64-bit-fix/15919
下载地址:
https://github.com/cocos2d/cocos2d-iphone-classic http://www.cocos2d-swift.org/download (2.2)
变化挺大, 不过至少语法上是一致的, 只是director和contianer变化很大;
.IPAD资源适配
ipad可以用iphone的资源: (即ipadhd可以用-hd后缀的图片)
.CCAction
修正了一些动作CCAction堆叠的问题, v1代码是包容的, 所以一直没有出错, v2必须逻辑上正确对待了
.appDelegate
v2最大的亮点是摒弃了RootViewControllerHD和GameConfig这两个看似有用, 实际鸡肋的文件
CCGLView略有修改, viewcontroller直接使用了UINavigationController, 貌似UIViewController也一样, CCDirector也有少许微调, 这些在Demo里面都可以很方面看到, 因为v2简化的已经很精简了
.AD
为了让iad和admob正确显示, 需要建个子UIViewController柄
.隐藏状态栏
因为已经脱离了RootViewControllerHD, 所以隐藏状态栏也相对简单, 在info.plist里面增加 "View controller-based status bar appearance" 值为 "NO" 就好了
.Menu
CCMenu.isTouchEnabled 变为了 CCMenu.enabled (setter)
.Layer
CCLayer.isTouchEnabled 变为 CClayer.touchEnabled (setter)
我倒是觉得is很方便呼出
.对iPhone6 和 iPhone6 Plus的支持
.因为cocos2d-iphone v2.2还是不支持新的iphone6和6plus设备, 不过可以通过手动修改来添加, 修改的地方很多, 但是复杂度并不高
方法转自这里: http://forum.cocos2d-swift.org/t/iphone-6-and-6-update-patch-for-cocos2d-2-1/15213/5 CCConfiguration.h
CCConfiguration.m method -(NSInteger)
runningDevice
methods
CCFileUtils.m
added
in the top
= [[NSMutableDictionary alloc] initWithObjectsAndKeys:
(void) buildSearchResolutionsOrder
added right before line else
if (device == kCCDeviceiPhoneRetinaDisplay)
resolutionTypeForKey:(NSString*)k inDictionary:dictionary
added
因为并没有涉及到横版游戏, 暂时没有研究如何实现
支持x64的v2引擎:
http://forum.cocos2d-swift.org/t/cocos2d-iphone-2-1-64-bit-fix/15919
下载地址:
https://github.com/cocos2d/cocos2d-iphone-classic http://www.cocos2d-swift.org/download (2.2)
变化挺大, 不过至少语法上是一致的, 只是director和contianer变化很大;
.IPAD资源适配
ipad可以用iphone的资源: (即ipadhd可以用-hd后缀的图片)
if (Ipad) { [[CCFileUtils sharedFileUtils] setiPadSuffix:@""]; [[CCFileUtils sharedFileUtils] setiPadRetinaDisplaySuffix:@"-hd"]; }
.CCAction
修正了一些动作CCAction堆叠的问题, v1代码是包容的, 所以一直没有出错, v2必须逻辑上正确对待了
.appDelegate
v2最大的亮点是摒弃了RootViewControllerHD和GameConfig这两个看似有用, 实际鸡肋的文件
CCGLView略有修改, viewcontroller直接使用了UINavigationController, 貌似UIViewController也一样, CCDirector也有少许微调, 这些在Demo里面都可以很方面看到, 因为v2简化的已经很精简了
.AD
为了让iad和admob正确显示, 需要建个子UIViewController柄
rootForOthers=[[UIViewController alloc]init]; [[director view]addSubview:[rootForOthers view]];
.隐藏状态栏
因为已经脱离了RootViewControllerHD, 所以隐藏状态栏也相对简单, 在info.plist里面增加 "View controller-based status bar appearance" 值为 "NO" 就好了
.Menu
CCMenu.isTouchEnabled 变为了 CCMenu.enabled (setter)
.Layer
CCLayer.isTouchEnabled 变为 CClayer.touchEnabled (setter)
我倒是觉得is很方便呼出
.对iPhone6 和 iPhone6 Plus的支持
.因为cocos2d-iphone v2.2还是不支持新的iphone6和6plus设备, 不过可以通过手动修改来添加, 修改的地方很多, 但是复杂度并不高
方法转自这里: http://forum.cocos2d-swift.org/t/iphone-6-and-6-update-patch-for-cocos2d-2-1/15213/5 CCConfiguration.h
enum { kCCDeviceiPhone, kCCDeviceiPhoneRetinaDisplay, kCCDeviceiPhone5, kCCDeviceiPhone5RetinaDisplay, //added kCCDeviceiPhone6, kCCDeviceiPhone6HD,
CCConfiguration.m method -(NSInteger)
runningDevice
else if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ) { // From http://stackoverflow.com/a/12535566 BOOL isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136)); BOOL isiPhone6 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(750, 1334)); if( CC_CONTENT_SCALE_FACTOR() == 2 ) { ret = isiPhone6 ? kCCDeviceiPhone6 : isiPhone5 ? kCCDeviceiPhone5RetinaDisplay : kCCDeviceiPhoneRetinaDisplay; } else if( CC_CONTENT_SCALE_FACTOR() == 3 ) { ret = kCCDeviceiPhone6HD; } else ret = isiPhone5 ? kCCDeviceiPhone5 : kCCDeviceiPhone; }ccTypes.h
//! ccResolutionType typedef enum { //added //! iPhone 6 kCCResolutioniPhone6, //! iPhone 6+ kCCResolutioniPhone6HD,CCDirectorIOS.m
-(BOOL) enableRetinaDisplay:(BOOL)enabled { // Already enabled ? if( enabled && (__ccContentScaleFactor == 2 || __ccContentScaleFactor == 3) ) return YES;
float newScale = enabled ? [[UIScreen mainScreen] scale] : 1;CCFileUtils.h added
methods
-(void) setiPhone6Suffix:(NSString *)suffix; -(void) setiPhone6HDSuffix:(NSString *)suffix;
CCFileUtils.m
added
in the top
NSString *kCCFileUtilsiPhone6 = @"iphone6"; NSString *kCCFileUtilsiPhone6HD = @"iphone6hd";added into _suffixesDict
= [[NSMutableDictionary alloc] initWithObjectsAndKeys:
@"-iphone6", kCCFileUtilsiPhone6, @"-iphone6hd", kCCFileUtilsiPhone6HD,Method -
(void) buildSearchResolutionsOrder
added right before line else
if (device == kCCDeviceiPhoneRetinaDisplay)
else if (device == kCCDeviceiPhone6) { [_searchResolutionsOrder addObject:kCCFileUtilsiPhone6]; [_searchResolutionsOrder addObject:kCCFileUtilsiPhone5]; [_searchResolutionsOrder addObject:kCCFileUtilsiPhoneHD]; } else if (device == kCCDeviceiPhone6HD) { [_searchResolutionsOrder addObject:kCCFileUtilsiPhone6HD]; [_searchResolutionsOrder addObject:kCCFileUtilsiPadHD]; }Method -(ccResolutionType)
resolutionTypeForKey:(NSString*)k inDictionary:dictionary
added
if( [key isEqualToString:kCCFileUtilsiPhone6] ) return kCCResolutioniPhone6; if( [key isEqualToString:kCCFileUtilsiPhone6HD] ) return kCCResolutioniPhone6HD;Added 2 method to this class:
-(void) setiPhone6Suffix:(NSString *)suffix { [_suffixesDict setObject:suffix forKey:kCCFileUtilsiPhone6]; } -(void) setiPhone6HDSuffix:(NSString *)suffix { [_suffixesDict setObject:suffix forKey:kCCFileUtilsiPhone6HD]; }AppDelegate.m
[sharedFileUtils setEnableFallbackSuffixes:YES]; [sharedFileUtils setiPhone6Suffix:@"-iphone6"]; //Default -iphone6 [sharedFileUtils setiPhone6HDSuffix:@"-ipadhd"]; //Default -iphone6hd
因为并没有涉及到横版游戏, 暂时没有研究如何实现
相关文章推荐
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- cocos2d-x游戏iphone移植到android需要注意事项
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的”.pvr.ccz”,”.plist”共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的”.pvr.ccz”,”.plist”共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- cocos2d-x游戏iphone移植到android需要注意事项
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的”.pvr.ccz”,”.plist”共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之十四】音频/音效/视频播放(利用Cocos2D-iPhone-Extensions嵌入Cocos2d进行视频播放!)
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏 推荐
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏
- 【iOS-cocos2d-X 游戏开发之二】【必看篇】总结阐述Cocos2d-X与Cocos2d-iphone区别;
- 【iOS-cocos2d-X 游戏开发之十一】New CCSprite()带来的错误&使用CCUserDefault及pvr.ccz在Cocos2dx中要注意!
- 【iOS-Cocos2d游戏开发之五】多触点与触屏事件详解(单一监听、事件分发)【11月28日更新】
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏
- 【Cocos2d游戏开发之九】CCSpriteBatchNode与"pvr.ccz","plist"精灵优化及注意事项 推荐