cocos2dx不同分辨率下的自动适屏

本文主要探讨了cocos2dx中如何进行屏幕适配,特别是在使用setDesignResolutionSize方法时,着重讲解了ResolutionPolicy::NO_BORDER策略的两种情况以及其它适配策略如EXACT_FIT和SHOW_ALL。同时提到了关键参数如设计分辨率大小、内容缩放因子、资源搜索路径、屏幕和设计分辨率的获取方法,帮助开发者理解如何在不同分辨率下实现游戏的自动适屏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if(!glview) {
glview = GLView::createWithRect("yuLua", Rect(0,0,320,568));
director->setOpenGLView(glview);
}

glview->setDesignResolutionSize(640, 1136, ResolutionPolicy::NO_BORDER);

主要在setDesignResolutionSize方法的最后一个参数,即适屏策略:

NO_BORDER:自动根据设计尺寸保证无边,可能的情况有下面两种:


当然还有一种是完全吻合

这时要注意的就是以下几个参数:

  1. Director::getInstance()->getOpenGLView()->setDesignResolutionSize() //设计分辨率大小及模式 
  2. Director::getInstance()->setContentScaleFactor() //内容缩放因子 
  3. FileUtils::getInstance()->setSearchPaths() //资源搜索路径 
  4. Director::getInstance()->getOpenGLView()->getFrameSize() //屏幕分辨率 
  5. Director::getInstance()->getWinSize() //设计分辨率 
  6. Director::getInstance()->getVisibleSize() //设计分辨率可视区域大小 
  7. Director::getInstance()->getVisibleOrigin() //设计分辨率可视区域起点 
getVisibleOrigin()根据设备的分辨率有可能会不同,所以UI等设置位置时要加上这个的偏移值


ResolutionPolicy::EXACT_FIT:这个一般不大用,是保证全部分显示设计尺寸,会拉伸

ResolutionPolicy::SHOW_ALL:是跟NO_BORDER相反,是保证设计尺寸能全屏显示在可见区域内,有以下两种情况:


ResolutionPolicy::FIXED_HEIGHT和ResolutionPolicy::FIXED_WIDTH:

 
 
  1. ResolutionPolicy::FIXED_HEIGHT 
保持传入的设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。
 
 
 
  1. ResolutionPolicy::FIXED_WIDTH 
保持传入的设计分辨率宽度不变,根据屏幕分辨率修正设计分辨率的高度。
FIXED_HEIGHT时要注意如果游戏中的layer以0,0为anchor则要重新设置x轴的偏移量

FIXED_WIDTH要注意y坐标

lua:

realVisibleRect=cc.Director:getInstance():getVisibleSize()--实际可见区域大小
realOrigin=cc.Director:getInstance():getVisibleOrigin()--实际原点


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值