Cocos2d-x3.2 屏幕适配

简介:

1、AppDelegate.cpp 文件中

?
1
2
3
4
5
6
7
8
9
10
11
bool  AppDelegate::applicationDidFinishLaunching() {
     // initialize director
     auto  director = Director::getInstance();
     auto  glview = director->getOpenGLView();
     if (!glview) {
         glview = GLView::create( "My Game" );
         director->setOpenGLView(glview);
     }
     glview->setDesignResolutionSize(640, 960, ResolutionPolicy::SHOW_ALL);
     ……………………
}

       不能把setDesignResolutionSize放在if条件里,因为在Android端的时候是不进入if条件的,有另外的地方做了初始化。

参数说明:

ResolutionShowAll

等比例拉伸,直到宽度或高度达到屏幕的尺寸,但是:如果游戏的设计分辨率和设备的屏幕分辨率比率不同,最后会出现黑边。如果打算在黑边出填放别的精灵是无效的,因为等比缩放后,黑边的部分不会进行绘制。假如设计分辨率低于大部分设备分辨率,在忽略黑边的情况下,这种适配方式可以满足大部分设备,而我们后面改进的适配方案就是把留出来的黑边利用上。结论:无法使用,黑边出现不符合很多渠道和应用商店的规范。这个参数说的明白一点就是当我们等比率的扩大和缩小我们的图片资源的时候,最先和屏幕的宽或者是高相匹配后就不再拉伸另一边了,当资源图片的宽高比和设备的宽高比不同时肯定有黑边。

ResolutionExactFit

非等比例拉伸,图像拉伸到整个屏幕。但是:如果游戏的设计分辨率和设备的屏幕分辨率不同,最后游戏画面失真。结论:可以使用,但是效果很差。

ResolutionNoBorder

等比例拉伸,直到宽度或高度达到屏幕尺寸,且保证在另一方向上不会出现黑边。就是当我们等比率的扩大和缩小我们的图片资源的时候,当比率小的那一个边和设备的边重合时,比率大的那一个边就出去了,所以虽然不会留下黑边,但是有的图片资源出去了,也许我们写的某一个控件就出去了。


2、FrameSize:实际上就是设备的原始分辨率(实际屏幕的大小),开发环境中可以通过 glview->setFrameSize( ) 来设置设备的分辨率大小,当然也可以可以通过 glview->setFrameSize( ) 获取得到设备的分辨率;

(编程时设置游戏窗口的大小)


WinSize:开发所设计的分辨率,即 setDesignResolutionSize( )方法中传入的前两个参数,通过Director::getInstance( )->getWinSize()获取;

VisibleSize:一定小于等于WinSize,即在WinSize范围之内,保持FrameSize宽高比的最大显示区域。

VisibleOrigin:在WinSize下被FrameSize截取的区域大小,即设计分辨率中与屏幕左下角对应的点。


3、常见android手机分辨率

4:3
VGA     640*480 (Video Graphics Array)
QVGA  320*240 (Quarter VGA)
HVGA  480*320 (Half-size VGA)
SVGA  800*600 (Super VGA)

5:3
WVGA  800*480 (Wide VGA)

16:9
FWVGA 854*480 (Full Wide VGA)
HD        1920*1080 High Definition
QHD     960*540


720p    1280*720  标清
1080p  1920*1080 高清

手机:
iphone 4/4s    960*640 (3:2)
iphone5         1136*640
小米1             854*480(FWVGA)
小米2             1280*720

 

分辨率对应DPI
"HVGA    mdpi"

"WVGA   hdpi "
"FWVGA hdpi "
"QHD      hdpi "
"720P     xhdpi"
"1080P   xxhdpi "


目录
相关文章
|
开发工具
npm install 卡死问题解决
npm install 卡死问题解决
1322 0
|
Windows
在VsCode上调试Cocos2d-x lua项目
在VsCode上调试Cocos2d-x lua项目
1389 0
|
JavaScript Ubuntu Java
零基础开发 nginx 模块
推荐学习资料: * nginx 开发指南: http://nginx.org/en/docs/dev/development_guide.html * nginx 动态模块编译博客文章: https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/ * nginx 源码: https://github.com/nginx
4969 1
|
存储 缓存 关系型数据库
MySQL8.0.28安装教程全程参考MySQL官方文档
MySQL8.0.28安装教程全程参考MySQL官方文档 为了MySQL8.0.28安装教程我竟然在MySQL官方文档逛了一天,至此献给想入门MySQL8.0的初学者。以目前最新版本的MySQL8.0.28为示例进行安装与初步使用的详细讲解,面向初学者的详细教程。无论是Windows还是Linux上安装,咱都会。这也许是迄今为止全网最最最详细的MySQL8.0.28的安装与使用教程。
3761 1
|
存储 运维 前端开发
淘宝 NPM 镜像站切换新域名啦
用CNPM/淘宝源的开发者们请注意,淘宝NPM 镜像站喊你切换新域名啦。新的Web 站点:https://npmmirror.com,Registry Endpoint:https://registry.npmmirror.com。随着新的域名已经正式启用,老 http://npm.taobao.org 和 http://registry.npm.taobao.org 域名将于 2022 年 05 月 31 日零时起停止服务。(望周知,求转发)
15086 1
|
存储 缓存 运维
系统稳定性设计原则:简单、冗余、标准化、健壮
系统稳定性设计原则:简单、冗余、标准化、健壮
822 0
系统稳定性设计原则:简单、冗余、标准化、健壮
|
Linux Docker 容器
在 CentOS7 上安装新版 Docker CE(使用国内源)
使用国内源在 CentOS 7 上安装和删除最新版 Docker CE 的简单教程。
13197 1
|
缓存 安全 Unix
C/C++使用Windows的API实现共享内存以及同步
C/C++使用Windows的API实现共享内存以及同步
1856 0
|
Linux Docker 容器
CentOS7系统安装最新版本docker实战
CentOS7系统安装最新版本docker实战
1810 0
CentOS7系统安装最新版本docker实战
|
前端开发 JavaScript 中间件
express VS koa
express 出来的时候,js 还是处于混沌期间,es6的标准没有出来。而node的事件处理的方式都是基于 cb(callback) 的这种形式,在当时来看,这种方式是比较好的一种方式。所以express 里面的中间件处理的方式基本上都是回调。es6 的出现,带来了许多新的标准。使得express 不得不考虑需要兼容es6中的语法, 而 es6中处理异步的方式是promise,还有后面陆续的 async 和 await 等语法糖。(express 不是说不能使用这些语法糖,他使用第三方的库是可以解决的,只是没有koa那么优雅)
express VS koa