cocos手机屏幕改变

针对有些手机机型虚拟键锁定的时候会改变手机屏幕大小,导致游戏部分界面被截取掉了,同时按钮实际点击区域发生偏移,请问这样该怎么处理?


没听懂你想干嘛

我上传了两张照片,此机型是魅蓝S6, 上面一张是没显示虚拟键,此时显示正确。 下图是滑出虚拟键然后固定,导致图片上部截取掉了,同时按钮点击区域发生偏移。

现在能理解了么?

提供一个思路吧
你可以试着根据下面的虚拟按钮是否出现动态改变屏幕的适配尺寸,不过我不知道怎么检测虚拟按钮,没搞过。
auto glView = _director->getOpenGLView();
//framesize不知道要不要调,你自己看看
glView->setFrameSize(frameSize.height, frameSize.width);
// 这里可以改成变化后的尺寸
glView->setDesignResolutionSize(1280, 720, ResolutionPolicy::NO_BORDER);
把高度减去虚拟按钮栏的高度应该可以,不过感觉视图的坐标会要重新调下。

虚拟键锁定后,getWinSize getFrameSize getVisibleSize 三个都没变化。

你不手动去改变的话,肯定不会变的。

我的意思是说你去手动把framesize和designresolutionsize变短一点试试

默认设置全屏现实,这样手机底条出来,游戏还是全屏,点击也不会有偏移了!

嗯 是默认全屏,但有些手机虚拟键是滑动之后才出来的。比如魅蓝S6,手机打开的时候 没虚拟键,往上滑动出来后,虚拟键还能锁定,就导致屏幕改变了。

前几天也碰到这个虚拟按键引起坐标偏移的问题了,在网上找了一点资料解决了虚拟按键弹出或缩回导致按钮点击偏移的问题。

参考链接:
https://www.cnblogs.com/xgjblog/p/8482567.html
如果一直是竖屏的话,用这个帖子里获取视图的高度,然后将高度重新设置给frameSize的高度,分辨率不变,就能解决点击偏移的问题了。