cocos2d-x 的屏幕适配问题困扰了我很久,差不多有一个星期吧。通过亲身实践才解决了问题,分享一下解决办法,供大家借鉴学习。

其实解决办法很简单,把下面代码注释掉就好了

  //   if (frameSize.height > mediumResolutionSize.height)
// {
// director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));
// }
// // if the frame's height is larger than the height of small size.
// else if (frameSize.height > smallResolutionSize.height)
// {
// director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width));
//}
// // if the frame's height is smaller than the height of medium size.
// else
// {
// director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width));
//}

是的,这是cocos2d-x 给我们生成的代码,很多资料都说使用

glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);

然而,当没有注释第一部分的代码时,用了setDesignResolutionSize()也不能完成屏幕适配,只是比不使用是更大了而已。

有的资料还说要将上面第一部分和第二部分代码结合使用,但是我用了没效果,反倒是注释了就可以了。

反正,屏幕适配,大概就这两部分代码,也就三种可能性(使用第一部分代码,使用第二部分代码,两部分代码一起使用,别问我为什么不提两部分代码都不使用这种情况),我也不是说我的办法就是对的,其他人的方法就是错的,developers试试这三种情况咯,应该总有一款适合你的。

本人接触cocos2d-x 时间不长,不足之处,请各位大神指出

04-28 23:47