屏幕适配的文章太多了,基本上都是理论性的东西。大家明确了机制就知道了。没有完美的适配方案,除非你们的美工愿意折腾。

常规策略:

今天研究了一下屏幕适配导致的缩放和展示不全的问题(黑边的方案直接淘汰)。细想一下。美工给我们一张图(如果这张图width足够长),在不同的分辨率上我们应该怎样对其展示?肯定不可能在全部的分辨率上把这张图完美的依照原比例展示出来,那答案就仅仅有两种了:

1、铺满屏幕(长宽非等比缩放 EXACTFIT)

天天德州就採用了这样的方法,在不同的分辨率上能明显看到元素被缩放或者拉伸了。对于休闲类游戏不必太过追求完美。

就不上图了。

2、部分图片被遮挡(长宽等比缩放 FIXHEIGHT)

保卫萝卜即用了这样的方式,场景中的控件相对布局大小等比缩放。

因为背景图採用了足够长的图片。在较宽的手机上背景图会展示的多,较窄的手机上展示的比較少。

请看以下两张图的四个角:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuYmluZ2Zlbmd5aW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

上面是手机截图原图。从上图能够看到控件的大小是一样的,可是因为分辨率的不同导致背景图的展示宽度不同。

方案測试:

第一种fit的方式就不说了,960*640的布局就OK。以下就使用cocosstudio来測试制作一下另外一种方案的场景。(吐槽一下。cocos preview实在是不能用。怪不得仅仅能叫preview)

測试方案一:

根节点使用绝对布局,勾选自适应屏幕。 子空间尺寸不勾选百分比(以免宽高非等比缩放导致变形),控件布局勾选百分比。480*320分辨率,背景图片大小也是480*320。

cocosstudio例如以下:

改动屏幕大小:

1.

glview->setFrameSize(, 320);

glview->setDesignResolutionSize(480, 320, ResolutionPolicy::FIXED_HEIGHT);

2.

glview->setFrameSize(, 320);

glview->setDesignResolutionSize(480, 320, ResolutionPolicy::FIXED_HEIGHT);

下图能够看到控件都未做不论什么拉伸,背景图明显小了。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuYmluZ2Zlbmd5aW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

測试方案二:

根节点使用绝对布局,勾选自适应屏幕。

子空间尺寸不勾选百分比(以免宽高非等比缩放导致变形),控件布局勾选百分比。

480*320分辨率,背景图片大小则改为640*320。

改动屏幕大小:

1.

glview->setFrameSize(, 320);

glview->setDesignResolutionSize(480, 320, ResolutionPolicy::FIXED_HEIGHT);

改动屏幕大小:

2.

glview->setFrameSize(, 320);

glview->setDesignResolutionSize(480, 320, ResolutionPolicy::FIXED_HEIGHT);

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuYmluZ2Zlbmd5aW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

改动屏幕大小:

3.

glview->setFrameSize(,);

glview->setDesignResolutionSize(480, 320, ResolutionPolicy::FIXED_HEIGHT);

结论:

測试用例为了展示效果使用的分辨率比較夸张,正常情况下长宽比是不会不会差距这么明显。

假设对于背景要求不是非常严格的游戏,能够採用另外一种来做屏幕适配。 控件宽高保持等比缩放,背景图部分展示就可以。

PS:1、对于理论性的东西只是与陈述。仅仅问方案究竟行,还是不行!

2、以上图片请勿用作商业用途,版权归光辉和老B同学全部。

使用cocos2dx 3.2和cocosstudio屏幕适配总结----相对布局的更多相关文章

  1. cocos2d-x结合cocosbuilder,不同屏幕适配小结

    这个问题搞了好几天才解决,在此总结一下: 首先约定只使用一套图片资源同时应用于iphon4和iphon5(测试过在ipad下也能显示正常), 这里我们将需要全屏显示的背景制作为iphon5的尺寸即:1 ...

  2. 屏幕适配 - JS - 网站布局元素

    网页可见区域宽:document.body.clientWidth; 网页可见区域高:document.body.clientHeight; 网页可见区域高:document.body.offsetW ...

  3. Android屏幕适配问题详解

    上篇-Android本地化资源目录详解 :http://www.cnblogs.com/steffen/p/3833048.html 单位: px(像素):屏幕上的点. in(英寸):长度单位. mm ...

  4. cocos2d-x 3.10 屏幕适配问题

    cocos2d-x 的屏幕适配问题困扰了我很久,差不多有一个星期吧.通过亲身实践才解决了问题,分享一下解决办法,供大家借鉴学习. 其实解决办法很简单,把下面代码注释掉就好了 // if (frameS ...

  5. cocos2dx屏幕适配方案

    我们在利用cocos2dx来开发游戏时,在开始时就不可避免的会遇到屏幕适配问题,来使我们的游戏适应移动终端的各种分辨率大小.目前,大家采用的屏幕适配方案不一,网上的资料也比较丰富,下面我也将自己使用的 ...

  6. Cocos2d-x——Cocos2d-x 屏幕适配新解 – 兼容与扩展【转载】

    Cocos2d-x 屏幕适配新解 – 兼容与扩展 本文出自[无间落叶](转载请保留出处):http://blog.leafsoar.com/archives/2013/05-13-08.html 在读 ...

  7. Cocos2d-x——Cocos2d-x 屏幕适配新解【转载】

    Cocos2d-x 屏幕适配新解 本文出自[无间落叶](转载请保留出处):http://blog.leafsoar.com/archives/2013/05-10-19.html 为了适应移动终端的各 ...

  8. cocos2d-x 屏幕适配新解

    转自:http://blog.leafsoar.com/archives/2013/05-10-19.html 为了适应移动终端的各种分辨率大小,各种屏幕宽高比,在 cocos2d-x(当前稳定版:2 ...

  9. cocos2dx ——屏幕适配

    本文出自 “夏天的风” 博客,请务必保留此出处 http://shahdza.blog.51cto.com/2410787/1550089 手机的屏幕大小千差万别,如现在流行的安卓手机屏幕大部分长宽比 ...

随机推荐

  1. Linux下离线安装MySQL

    Linux下安装mysql 1 检查并卸载已安装mysql 命令:rpm -qa|grep -i mysql 命令:rpm -e --nodeps ‘上个命令后显示的本机已安装mysql依赖’ 如果存 ...

  2. 解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

    转自:http://www.cnblogs.com/joyceTING/archive/2013/05/09/3069089.html正则表达式 \w+([-+.]\w+)*@\w+([-.]\w+) ...

  3. 基于python3-sklearn,Flask 的回归预测系统

    看到一副图片挺有意思,放在片头 序 "傍晚小街路面上沁出微雨后的湿润,和煦的西风吹来,抬头看看天边的晚霞,嗯明天又是一个好天气.走到水果摊旁,挑了个根蒂蜷缩.敲起来声音浊响的青绿西瓜,一边满 ...

  4. KafkaProducer的整体逻辑

    概述 KafkaProducer是用户向kafka servers发送消息的客户端.官网上对producer的记载如下: Kafka所有的节点都可以应答metadata的请求,这些metadata中包 ...

  5. Swift学习笔记(1):基础部分

    目录: 分号 常量和变量 数据类型 数值型类型转换 类型别名 元组 可选类型 API版本检查 分号 Swift并不强制要求你在每条语句的结尾处使用分号( ; ),你也可以按照自己的习惯添加分号.如果在 ...

  6. Android中的Junit测试

    在开发中Junit测试可以很方便的帮助开者尽可能早的发现并处理问题,而且使用也非常简单,只需要导入Junit测试相关的jar包并创建测试类,就可以对业务功能进行测试,而不用为了测试在代码中添加输出语句 ...

  7. Ubuntu 18.04 安装 Broadcom Limited BCM43142无线网卡驱动

    系统默认没有集成 BCM43142无线网卡驱动可以通过下面的方法安装--------------------------------------------------------------root ...

  8. 洛谷 P1501 [国家集训队]Tree II Link-Cut-Tree

    Code: #include <cstdio> #include <algorithm> #include <cstring> #include <strin ...

  9. file_get_contents 无法采集 https 网站

    <?php echo file_get_contents("https://www.baidu.com"); ?> 运行以上代码会报以下错误: 再运行一次去看看!

  10. Linux 下安装 redis 详情

    一:将redis 压缩包上传到 Linux  usr/local下 (一):在local 下创建一个 redis 目录 (二):上传redis压缩包到此目录下. 二:Linux 进入 local目录下 ...