屏幕自适应因情况不同,方法不同,这里记录几个概念,懂了这几个概念,cocos屏幕自适应问题应该容易解决。
屏幕的的实际尺寸大小使用getFrameSize()获取,代表屏幕大小,游戏开发过程中,坐标与屏幕实际尺寸并不对应,而是对应于设计辨率,这样针对不同的屏幕,程序根据适配模式(固定宽,固定高,无边框)统一自适应到屏幕上。
display.width和diplay代表虚拟分辨率(或者设计分辨率),指游戏开发过程中,设置物体位置的坐标大小跟此设计分辨率相对应, 在config.lua设置,也可使用setDesignResolutionSize手动设置。
如果一个项目和另一项目的设计分辨率不一样,解决适配问题,可在游戏调用另一个游戏时,将自己程序的设计分辨率和导入的游戏设置一致,退出后,再恢复本来的设计分辨率,lua中调用下面语句:
glview->setDesignResolutionSize(300,300, ResolutionPolicy::NO_BORDER);
此外,auto frameSize = director->getOpenGLView()->getFrameSize()指屏幕大小, director->getWinSize()指设计分辨率。此外屏幕分辨率在手机上是特定的,如果想要实现改变游戏分辨率来降低渲染质量,提供渲染速度,需要使用frameBuffer实现,cocos没有提供,而layabox有这个功能,后续会把这种设置游戏分辨率的功能实现。