Cocos2d-X的多分辨率支持(1)
??
课程概述“Cocos2d-X的多分辨率支持(1)”课程概述作为手游的载体,手机的发展日新月异,不仅是性能提高,尺寸的多样化也成了一大亮点。本节课将介绍由Cocos2d-X提供的:如何匹配不同分辨率手机屏幕办法中的设计分辨率部分。 课程笔记不同的分辨率按照怎样的方式缩放元素1、根据不同的屏幕分辨率设计不同的元素缩放比例 2、通过函数获取屏幕尺寸,根据屏幕尺寸按照一定比例设置元素 3、按照一个预定义的分辨率设计,由游戏引擎来根据这个分辨率针对不同的实际屏幕分辨率进行调整。 在第3种情况中,开发者定义设计分辨率,并提供给游戏引擎缩放系数(缩放策略);以及资源缩放因子用于对资源的尺寸进行调整。 缩放策略: 1、ResolutionPolicy::EXACT_FIT,满屏显示,可能会由于宽高比不同,出现比例不协调的现象。视口为屏幕分辨率,绘制区域是设计分辨率表示的区域,绘制原点为设计分辨率对应区域的原点。 2、ResolutionPolicy::NO_BORDER,超过屏显示,以较大的缩放系数为准,内容会显示到屏幕外,然后被裁剪。居中显示,视口大于屏幕分辨率,绘制区域是设计分辨率表示的区域,绘制原点为设计分辨率对应区域的原点。 3、ResolutionPolicy::SHOW_ALL,小于屏显示,以较小的缩放系数为准,内容全部都会显示到屏幕内,可能出现黑边。居中显示,视口小于屏幕分辨率,绘制区域是设计分辨率表示的区域,绘制原点为设计分辨率对应区域的原点。 4、ResolutionPolicy::FIXED_xxxxx,以指定边的缩放系数为准,可能满屏显示,也可能出现空白。视口等于屏幕分辨率,绘制区域不是设计分辨率表示的区域,而是实际的屏幕分辨率,所以写应用程序的时候不能写绝对值坐标。(当然固定的这个边是可以写固定值的) Director::getInstance()->getWinSize()可得到绘制区域的分辨率,在ResolutionPolicy::NO_BORDER会超过实际分辨率,在ResolutionPolicy::SHOW_ALL会小于实际分辨率,在ResolutionPolicy::EXACT_FIT、ResolutionPolicy::FIXED_xxxxx等于实际分辨率。 Director::getInstance()->getVisibleSize()可得到绘制区域在可视区域的分辨率。 Director::getInstance()->getWinSizeInPixels()可得到绘制区域在OpenGL ES的真实区域的大小。 Director::getInstance()->getVisibleOrigin()可得到可视区域原点在绘制区域的位置,仅当ResolutionPolicy::NO_BORDER的情况下有用。 GLView::getFrameSize()可得到实际屏幕分辨率。Director::convertToUI用于返回一个基于设备UI系统的坐标值。 GLView::setDesignResolutionSize会导致viewport、透视矩阵、观察点位置的重新设置。setViewPortInPoints会将设计分辨率转换为基于屏幕实际像素大小的坐标信息。而透视投影矩阵、观察点的位置都是根据_winSizeInPoints设计的。
原文地址: http://www.geekfaner.com/cocos2d-x/ReadCocos2dxSourceCode20.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |