Disqus 无法加载。如果您是管理员,请参阅故障排除指南

MT • 9 年之前

每个游戏有自己不同的特色,对于屏幕适配方案,可以根据需求在尽量保证开发效率的基础上选择最优的适配方案。对于楼主的文章,学习其思想和分析,为自己所用,没有哪个方案是万能的。

蜗牛宝宝 • 10 年之前

没看出来“LsSize 可以补全这个黑边”是怎么体现出来的。这不是还是通过放大背景,实现遮住黑边吗,求楼主解释

leafsoar • 10 年之前

是通过放大,但是这个时候的可视区域的大小,长宽就不可控制了,用前文话说,用 NoBorder 去实现 ShowAll 的思想,看前文配图

☆随心の风 • 10 年之前

假设我的designSize = 960X640.那么我要设置一个右上角对齐的图标,那么我会设置它 it->setPosition(ccp(960,640)),那么我设置的这个坐标,会自动转换成LSSize的坐标么?还是它的坐标实际上依旧是按照winSize的坐标去设置这些图标?

leafsoar • 10 年之前

LsSize 是一种适配方案,在 NoBorder 中,你的 ccp(960, 640) 可能会超出屏幕之外(因为宽高比,可能截取部分)。而设置 LsSize 可以动态的根据官高比实时设定 winSize ,以保证 ccpAdd(pointLeftBottom, ccp(960, 640)) 此点也在屏幕之内, pointLeftBottom 点则是 LsSize 中左下角的点,它不一定是 ccp(0, 0)。

☆随心の风 • 10 年之前

其实,我之前也遇到了IPHONE 5 按照showAll留下的问题,就是 上下 2边留下了黑色的空的区域。ipad 4也是留下了左右2边空的区域。而我的处理方式估计是懒到一定程度了。。。我直接获取了 maxScale(就是宽高比中更大的那个),然后 绘制 游戏的背景图 (CCSprite*)backGround->scale(ccp(x_scale,y_scale));
可能是我的游戏唯一能改变,允许拉伸的也只有UI界面中的背景图一个。而UI的布局是不能改变的。所以我也一直用着ShowAll模式……
我还没明白LsSize是做何用途的。。。求解……

leafsoar • 10 年之前

ShowAll 自动留黑边,LsSize 可以补全这个黑边,并且保持 “画布大小” 总能显示。“画布大小”在 ShowAll 中理解为 winSize,看前一篇文章的效果图,指出了哪个区域是 LsSize。

barry hung • 10 年之前

你好我是cocos2dx新手,請問你這方法和cocos2dx 2.1.3 新增的 kResolutionFixedHeight 和kResolutionFixedWidth 是一樣的嗎?

leafsoar • 10 年之前

从效果显示上来说,是一样的,固定一个方向的宽度,只是 2.1.3 把功能封装在内部了,但原理应同样,其内部也是动态修改设计大小的:
if ( resolutionPolicy == kResolutionFixedHeight) {

m_fScaleX = m_fScaleY;

m_obDesignResolutionSize.width = ceilf(m_obScreenSize.width/m_fScaleX);

}

Ming Zhang • 10 年之前

我觉得这些方案只是为了省事,牺牲效果来达到适配的目的
楼主提供的方案的确可以最大限度降低效果牺牲 而且提高移植效率
但是本质上解决多分辨率问题还是得通过合理的UI布局方案
可以参考Xcode IOS UI设计方案

leafsoar • 10 年之前

通过“合理的UI布局”方案,会变相加重游戏设计的复杂度,降低开发效率,无可避免,两者之间,或轻或重,总有取舍。我们就是要找一个合理的平衡点,满足自己的需要。所以本文的扩展就算是提供了更多的设计选择吧!