ios老游戏更新 cocos2d-iphone 注意事项
来源:互联网 发布:怎么样制作app软件 编辑:程序博客网 时间:2024/05/06 04:14
之前用的是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后缀的图片)
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,//addedkCCDeviceiPhone6,kCCDeviceiPhone6HD,
CCConfiguration.m method -(NSInteger) runningDevice
else if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ){// From http://stackoverflow.com/a/12535566BOOL 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; } elseret = isiPhone5 ? kCCDeviceiPhone5 : kCCDeviceiPhone;}ccTypes.h
//! ccResolutionTypetypedef 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-iphone 注意事项
- iOS游戏第一步安装cocos2d-iphone
- cocos2d-x游戏iphone移植到android需要注意事项
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-瞬时动作
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-延时动作
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-组合动作
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-速度变化
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-扩展动作
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-扩展动作
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-速度变化
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-组合动作
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-延时动作
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-瞬时动作
- cocos2d-iPhone暂停游戏
- 【iOS-cocos2d-X 游戏开发之二】【必看篇】总结阐述Cocos2d-X与Cocos2d-iphone区别;
- 【iOS-cocos2d-X 游戏开发之二】【必看篇】总结阐述Cocos2d-X与Cocos2d-iphone区别;
- 【iOS-cocos2d-X 游戏开发之二】【必看篇】总结阐述Cocos2d-X与Cocos2d-iphone区别
- 【iOS-cocos2d-X 游戏开发之二】【必看篇】总结阐述Cocos2d-X与Cocos2d-iphone区别
- 文件管理脚本
- MySQL索引背后的数据结构及算法原理
- Maven入门示例(4):自动部署Tomcat错误排除
- os的手机品牌达43家共计7阿里巴巴京东中移动抛出媚眼,中小品牌手机厂商如何应对?
- 越是高端的即时通讯软件越保值
- ios老游戏更新 cocos2d-iphone 注意事项
- IOS多线程开发之GCD
- Sort List (Java)
- WordPress“建立数据库连接时出错”
- php简介
- 创建型设计模式(一)
- kmp代码实现
- [leetcode 118] Pascal's Triangle
- Unity3d知识总结-C#使用1