最近几天在研究游戏适配IphoneX机型的问题,现总结一下以防忘记,之前想着通过采用网上一篇介绍cocos2dx 适配X的方法实现全屏,

链接:https://mp.weixin.qq.com/s/2icxj1E8t2540Zr0j4aIZA,

https://github.com/biganans/cocos2x-adaptation

这样是解决了全屏的问题,但是因为齐刘海的问题,有些按钮都被遮挡住了,如果单独对这些遮挡的按钮进行位置操作的话,整个ui布局效果就会很差,而且针对每一个被遮挡的控件界面都要操作,工作量还是比较大的,我们游戏也已经开发了一些时日,所以在这个基础上进行了一些修改,采用两边留出一部分用图片填充,游戏UI都在中间部分展示的方式

首先,在 RootViewController.mm文件里添加方法“viewSafeAreaInsetsDidChange”,这个方法是干嘛的在xcode Quick help里都有介绍,这里就不说了,:

- (void)viewSafeAreaInsetsDidChange {

[superviewSafeAreaInsetsDidChange];

NSLog(@"viewSafeAreaInsetsDidChange %@",NSStringFromUIEdgeInsets(self.view.safeAreaInsets));

[selfupdateOrientation];

}

bool changeViewFrame = false;

- (void)updateOrientation {

if (@available(iOS11.0, *)) {

CGRect rect = [[UIScreenmainScreen]bounds];

CGSize size = rect.size;

CGFloat width = size.width;

CGFloat height = size.height;

CGFloat scale_screen = [UIScreenmainScreen].scale;

//通过分辨率判断是否是iPhoneX手机

if (width*scale_screen ==2436and height*scale_screen ==1125)

{

if (self.viewand !changeViewFrame)

{

CGRect s =CGRectMake(self.view.safeAreaInsets.left-13,0,self.view.frame.size.width - self.view.safeAreaInsets.left -self.view.safeAreaInsets.right+26,

self.view.frame.size.height);

self.view.frame = s;

changeViewFrame =true;

}

}

}

}

里面做了一些判断,主要是通过分辨率来判定是否是X(这个方法可能不好,如果有谁知道更好的方法,也可以贴出来大家学习学习~~),显示区域选择中间某一块。

其次,在“AppController.mm”文件里的 “

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions” 方法里进行处理:

// Set RootViewController to window

if ( [[UIDevicecurrentDevice].systemVersionfloatValue] < 6.0)

{

// warning: addSubView doesn't work on iOS6

[windowaddSubview:_viewController.view];

}

else

{

// use this method on ios6

[windowsetRootViewController:_viewController];

}

[windowmakeKeyAndVisible];

[[UIApplicationsharedApplication]setStatusBarHidden:true];

if (@available(iOS11.0, *))

{

CGRect rect = [[UIScreenmainScreen]bounds];

CGSize size = rect.size;

CGFloat width = size.width;

CGFloat height = size.height;

CGFloat scale_screen = [UIScreenmainScreen].scale;

//通过分辨率判断是否是iPhoneX手机

if (width*scale_screen ==2436and height*scale_screen ==1125)

{

UIView *viewLeft = [[UIViewalloc]initWithFrame:CGRectMake(0,0,31,_viewController.view.frame.size.height)];

UIImageView* imageViewL = [[UIImageViewalloc]initWithFrame:viewLeft.bounds];

imageViewL.image = [UIImageimageNamed:@"bg_back.png"];

[viewLeft addSubview:imageViewL];

[window addSubview:viewLeft];

[window sendSubviewToBack:viewLeft];

UIView *viewRight = [[UIViewalloc]initWithFrame:CGRectMake(_viewController.view.frame.size.width + 31,0,31,_viewController.view.frame.size.height)];

UIImageView* imageView = [[UIImageViewalloc]initWithFrame:viewRight.bounds];

imageView.image = [UIImageimageNamed:@"bg_back.png"];

[viewRight addSubview:imageView];

[window addSubview:viewRight];

[window sendSubviewToBack:viewRight];

}

}

// IMPORTANT: Setting the GLView should be done after creating the RootViewController

cocos2d::GLView *glview =cocos2d::GLViewImpl::createWithEAGLView((__bridgevoid *)_viewController.view);

cocos2d::Director::getInstance()->setOpenGLView(glview);

//run the cocos2d-x game scene

app->run();

return YES;

这样操作之后UI都显示在中间区域部分了,但是后来在运行测试的时候,又发现了一个bug,就是在输入框输入东西的时候,整个视图做移动缩放动画,位置更改了,通过debug 之后发现在文件“CCEAGLView-ios.mm” 下图这个方法里添加额外处理:

- (id) initWithFrame:(CGRect)frame pixelFormat:(NSString*)format depthFormat:(GLuint)depth preserveBackbuffer:(BOOL)retained sharegroup:(EAGLSharegroup*)sharegroup multiSampling:(BOOL)sampling numberOfSamples:(unsigned int)nSamples

{

if (@available(iOS 11.0, *))

{

CGRect rect = [[UIScreen mainScreen] bounds];

CGSize size = rect.size;

CGFloat width = size.width;

CGFloat height = size.height;

CGFloat scale_screen = [UIScreen mainScreen].scale;

//通过分辨率判断是否是iPhoneX手机

if (width*scale_screen == 2436 and height*scale_screen == 1125)

{

frame = CGRectMake(31,0,750,375);

}

}

//其他的操作

}

这样的话就行了,效果图就不上传了,目前还没有IphoneX机子,这个是在模拟器上实现的,如果哪位同学有更好的方法,可以相互学习学习~~~~~~~~~

cocos2dx iphoneX 游戏适配相关推荐

  1. html手机管家页面,手机管家iPhoneX的适配总结

    原标题:手机管家iPhoneX的适配总结 作者:龙伟炜, 腾讯手机管家移动端开发 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/l ...

  2. 《cocos2d-x手机游戏开发实战》直播课程第一期介绍

    史上最牛的cocos2d-x课程 <cocos2d-x手机游戏开发实战>直播课程第一期 史上最牛的优惠活动: 报名关东升老师iOS会员送cocos2d-x直播课程,而且终身会员价格只要19 ...

  3. 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第二十一课:Cocos2D-X网格特效1-3

    [麦可网]Cocos2d-X跨平台游戏开发---学习笔记 第二十一课:Cocos2D-X网格特效1-3 ================================================ ...

  4. H5页面WebView在iPhoneX的适配

    1.  iPhoneX的介绍 屏幕尺寸    我们熟知的iPhone系列开发尺寸概要如下: △ iPhone各机型的开发尺寸 转化成我们熟知的像素尺寸: △ 每个机型的多维度尺寸 倍图其实就是像素尺寸 ...

  5. 说说Laya微信小游戏适配问题

    一 前言 经常有同行对于Laya小游戏适配问题不懂如何处理,特别是目前手机端游戏屏幕大小各不相同,宽高比例更是五花八门. 就微信开发者工具里面的模拟器屏幕大小就有以下这些: 模拟器里面仅仅列出的部分屏 ...

  6. vs2017 配置IIS Express 失败,初始化 applicationhost.config文件失败找不到IIS Express,cocos2dx网页游戏网站形式打开错误

    visual studio 2017 配置IIS Express 失败,初始化 applicationhost.config文件失败,找不到IIS Express.cocos2dx网页游戏网站形式打开 ...

  7. Cocos-2dx台球游戏实现

    Cocos-2dx台球游戏的实现 本文由 @lonelyrains出品,转载请注明出处. 文章链接: http://blog.csdn.net/lonelyrains/article/details/ ...

  8. LayaAir已支持vivo小游戏适配与IDE内一键发布!

    6月底,我们本该发个引擎版本,由于计划搞点大动作.所以很抱歉,我们跳票了. 引擎语言从AS3全面转向TS,这个动静有点大,很多引擎小细节变了(不影响API),不止是代码迁移的工作量,还有各种测试. 为 ...

  9. iphonex适配游戏_iPhoneX王者荣耀适配问题 iPhoneX游戏问题详解

    王者荣耀v1.31.4.18 安卓最新官方版 类型:角色扮演大小:469.3M语言:中文 评分:7.6 标签: 立即下载 iPhoneX是苹果最近上市的一款非常高端的手机,相信很多小伙伴在iPhone ...

最新文章

  1. 创建windows窗口并且获得窗口句柄
  2. Marshal.Copy 之 startIndex 参数的含义
  3. 在js中如何判断一个对象是否为空
  4. Minimum grid
  5. 嵌入式linux截屏代码,嵌入式linux截屏程序
  6. 关于@SuppressWarnings(unchecked)注解
  7. Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)
  8. 张一鸣向盖茨基金会捐赠1000万美元 此前国内捐款1亿元用于抗疫
  9. html圆形空心选择按钮,CSS3 简单的实心/空心按钮
  10. 前后端交互之封装Ajax+SpringMVC源码分析
  11. 网站发布后验证码不显示
  12. 《iPhone与iPad开发实战—iOS经典应用剖析》连载三
  13. .Net读取Excel(包括Excel2007)
  14. PreferenceScreen 的使用
  15. VB 语言介绍以及VBA、宏(Macro)的关系
  16. MySQL字段名诸如key的报错问题
  17. AMD:无限你我的无限
  18. 网站可行性报告范文_嵩县写可行性研究报告项目报告范文
  19. 基于exif信息进行图片方向旋转修正
  20. 记录学习 - 分区函数Partition By的使用

热门文章

  1. bytebuddy实现原理分析 源码分析 (三)- advice 详解
  2. 2017-2020(4周年)读书年度总结及书单
  3. 嘉和美康科创板IPO:阿里健康是股东,副总姬铮并非核心技术人员
  4. 第五届蓝桥杯—— 基础练习:特殊的数字
  5. 机器学习(一):概述
  6. BMS-Pro电池巡检综合监控系统
  7. 16个最佳WordPress登录页面插件
  8. 扫拖一体洗地机实用吗、扫拖一体洗地机哪个品牌好,看完就知道
  9. 修改STM32CuBeMX生成文件
  10. mac蓝牙键盘工具分享——通过mac键盘给iPhone、iPad打字