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

来源:互联网 发布:分销平台系统源码 编辑:程序博客网 时间:2024/06/01 08:36
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()--实际原点


0 0
原创粉丝点击