问题是这样的,我的游戏打包到安卓手机后,有的安卓手机往上一拉会弹出菜单项,会把游戏界面整体往上移动,然后就导致我的按钮响应的位置跟图片的位置不一样了。 我用的ResolutionPolicy 是 showall 请问谁遇到过这个问题。 有什么解决办法没?
界面是从cocosstudio里导出来的。
按钮是从cocosstudio导出来的
一般很少有用showall的适配方式
showall的缩放方式 只是有的设备可能出现黑边吧。 应该不会影响响应位置才对啊
查资料查了快一天了。 有的说 把glview = GLView::create(“name”); 换成glview = GLView::createWithRect(“name”,cocos2d::Rect(0,0,fw,fh),1.0f); 就可以了 我去试了下 结果还是不行。createWithRect 只是 GLView::create, GLView::setframesize 跟 GLView::setfactor 的 集中写法。
有的说是 没有设置屏幕的自适应 。 可是我明明有设置 glview->setDesignResolutionSize(dw,dh,(ResolutionPolicy)p); //ResolutionPolicy::SHOW_ALL);
然后我又去cocos2d-js 用 cocos code ide 去测试了一下。 奇怪的是 这个cocos2d-js 在游戏运行过程中改变窗口大小后,按钮的响应位置并没有错位。
还有的人说 要把 glview->setFrameSize(w,h); 放在 director->setOpenGLView(glview); 的前面 ,我去试了下还是不行。 这是不是cocos引擎的一个bug啊。 是不是在游戏运行过程中就一定不能改变 窗口的大小啊? 有没有内部人员或者其他大神帮忙看一下。
因为我的美术资源是用cocostudio 导出的 里面的button 有 坐标 或者 百分比布局两种, 之前是用的坐标,然后让美术的同学 按百分比布局导出了张图。 然后去程序里去测试 结果还是不行。
我又测试了一下 游戏开始 ,按下按钮之后 设置 再按照不变的尺寸设置一遍他的大小 view->setFrameSize(size.width,size.height); size 是原场景的获得的size。 结果你猜怎么着 。 原大小再设一遍 都会引起里面按钮的响应位置错位那么一点点。
对这个问题我已经力竭了。。。。

这个bug已经提交给官方人员。 是在CCGLViewProtocol.cpp 的 119行。 当设置的Size 宽高大于 你显示器屏幕的宽高时 就可能导致适配的方式跟不上节奏。 我自己测试的是这样的