if(!glview) {
glview = GLView::createWithRect("yuLua", Rect(0,0,320,568));
director->setOpenGLView(glview);
}
glview = GLView::createWithRect("yuLua", Rect(0,0,320,568));
director->setOpenGLView(glview);
}
glview->setDesignResolutionSize(640, 1136, ResolutionPolicy::NO_BORDER);
主要在setDesignResolutionSize方法的最后一个参数,即适屏策略:
NO_BORDER:自动根据设计尺寸保证无边,可能的情况有下面两种:
当然还有一种是完全吻合
这时要注意的就是以下几个参数:
- Director::getInstance()->getOpenGLView()->setDesignResolutionSize() //设计分辨率大小及模式
- Director::getInstance()->setContentScaleFactor() //内容缩放因子
- FileUtils::getInstance()->setSearchPaths() //资源搜索路径
- Director::getInstance()->getOpenGLView()->getFrameSize() //屏幕分辨率
- Director::getInstance()->getWinSize() //设计分辨率
- Director::getInstance()->getVisibleSize() //设计分辨率可视区域大小
- Director::getInstance()->getVisibleOrigin() //设计分辨率可视区域起点
ResolutionPolicy::EXACT_FIT:这个一般不大用,是保证全部分显示设计尺寸,会拉伸
ResolutionPolicy::SHOW_ALL:是跟NO_BORDER相反,是保证设计尺寸能全屏显示在可见区域内,有以下两种情况:
ResolutionPolicy::FIXED_HEIGHT和ResolutionPolicy::FIXED_WIDTH:
- ResolutionPolicy::FIXED_HEIGHT
保持传入的设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。
- ResolutionPolicy::FIXED_WIDTH
保持传入的设计分辨率宽度不变,根据屏幕分辨率修正设计分辨率的高度。
FIXED_HEIGHT时要注意如果游戏中的layer以0,0为anchor则要重新设置x轴的偏移量
FIXED_WIDTH要注意y坐标
lua:
realVisibleRect=cc.Director:getInstance():getVisibleSize()--实际可见区域大小
realOrigin=cc.Director:getInstance():getVisibleOrigin()--实际原点