cocos2d-x c++ (多种屏幕Android与iOS的适配原理)
1、AppDelegate.cpp 文件中
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:3VGA 640*480 (Video Graphics Array)QVGA 320*240 (Quarter VGA)HVGA 480*320 (Half-size VGA)SVGA 800*600 (Super VGA)
5:3WVGA 800*480 (Wide VGA)
16:9FWVGA 854*480 (Full Wide VGA)HD 1920*1080 High DefinitionQHD 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 "
cocos2d-x c++ (多种屏幕Android与iOS的适配原理)的更多相关文章
- 创办支持多种屏幕尺寸的Android应用
创建支持多种屏幕尺寸的Android应用 Android涉及各种各样的支持不同屏幕尺寸和密度的设备.对于应用程序,Android系统通过设备和句柄提供了统一的开发环境,大部分工作是校正每一个应用程序的 ...
- 如何使Android应用支持多种屏幕分辨率
原文:http://android.eoe.cn/topic/android_sdk 描述: 让您指定您的应用支持的屏幕的大小并且可以通过屏幕兼容模式来支持比您应用所支持更大的屏幕.所以这对于您需要在 ...
- Android和iOS中Cocos2D日志为什么会出现skip frames
在你运行app在Android或iOS设备或iOS模拟器中时,日志里往往会出现一行: I/Choreographer(28956): Skipped 159 frames! The applicati ...
- 学习笔记:APP切图那点事儿–详细介绍android和ios平台
学习笔记:APP切图那点事儿–详细介绍android和ios平台 转载自:http://www.woofeng.cn/articles/168.html 版权归原作者所有 作者:亚茹有李 原文地址 ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- 经典软件测试面试题目:Android 和 ios 测试区别?这样回答:稳!
Android 和 ios 测试区别? App 测试中 ios 和 Android 有哪些区别呢?1.Android 长按 home 键呼出应用列表和切换应用,然后右滑则终止应用:2.多分辨率测试, ...
- Unity在Android和iOS中如何调用Native API
本文主要是对unity中如何在Android和iOS中调用Native API进行介绍. 首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调 ...
- .NET/android/java/iOS AES通用加密解密(修正安卓)
移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...
- .NET/android/java/iOS AES通用加密解密
移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...
随机推荐
- C#中字符串转换为计算公式(自定义公式的计算)
第一种解决方案 第一种也是功能最强大的一种,可以使用Eval函数,像在Java中一样强大,几乎所有的运算符都可以实现,包括四则运算,与或非等. 添加COM引用: private void button ...
- [No0000142]Outlook通过添加签名 自动添加邮件模板
新建邮件->alt+F9切换域代码显示. 编写好模板后,全选复制到签名. 2018/05/7_加班申请_高亚斌 工号 姓名 开始时间 结束时间 工作事项 160227 高亚斌 2018/05/7 ...
- hive on tez配置
1.Tez简介 Tez是Hontonworks开源的支持DAG作业的计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升MapReduce作业的性能.Tez并不直接面向最终用户--事实上它允许 ...
- linux:基本指令mkdir, rmdir 和rm
mkdir 建立文件夹 mkdir (make directory) 就是创建一个文件夹的意思, 使用起来很简单. 1.新建一个目录: $ mkdir folder2 如果你想在这个目录给 folde ...
- nginx的proxy_pass路径转发规则浅析(末尾/问题)
源地址 : https://www.zifangsky.cn/917.html 一 location匹配路径末尾没有 / 此时proxy_pass后面的路径必须拼接location的路径: 1 2 ...
- json解析出来数据为空解决方法
从APP端或从其他页面post,get过来的数据一般因为数组形式.因为数组形式不易传输,所以一般都会转json后再发送.本以为发送方json_encode(),接收方json_decode(),就解决 ...
- day2_webservice接口怎么测-SoapUI
可以用SoapUI工具测试 步骤: 1.新建soap project Ok后左侧出现接口内容 2.输入参数执行 3.根据需求文档的参数返回值做对比
- 关于.htaccess的设置
RewriteEngine On #设置是否开始rewrite RewriteBase / #设置开始匹配的目录,比如web程序放在/var/www/html/test下,则这个值要设置为" ...
- WIN7环境变量path误删(windows找不到文件‘%windir%\systempropertiesadvanced.exe’)的解决办法
一.进入安全模式 1.通过Ctrl+R打开运行窗口,输入Msconfig 2.如上图,选择安全引导,点击确定.重启计算机进入安全模式. 二.在安全模式下,设置环境变量 1.C:\Windows\Sys ...
- kibana设置mapping
demo: PUT linewell_assets_mgt_fz_es/lw_devices/_mapping { "properties": { "update_tim ...