在手机端开发,屏幕适配是个永恒的话题,主要由于android(ios)碎片化……
网上有很多帖子讲解cocos2d-x 2.x 屏幕适配的帖子,很少关于 3.2的,今天我参考http://blog.csdn.net/liaowenfeng/article/details/8566856点击打开链接,
在 3.x 的引擎上研究了哈,屏幕适配……有兴趣的筒子们可以喵喵……
原理就不讲了,参考上面的链接,写的很清晰,哎,太懒了……
其实主要就是在 文件 AppDelegate.cpp中 的 applicationDidFinishLaunching 方法中实现.
具体见代码
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create("My Game");
director->setOpenGLView(glview);
}
double mWidth = director->getWinSize().width;
double mHeight = director->getWinSize().height;
log("----winSize:width=%f, height=%f;", mWidth, mHeight);
//glview->setFrameSize(1920, 1080);
/*设置屏幕适配解决方案*/
glview->setDesignResolutionSize(480, 320, ResolutionPolicy::NO_BORDER);
// turn on display FPS
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);
// create a scene. it's an autorelease object
auto scene = HelloWorld::createScene();
// run
director->runWithScene(scene);
return true;
}
注意:记得一定要在 glview 创建后 调用 setDesignResolutionSize(width, height, ResolutionPolicy::NO_BORDER); 这个方法哟。不然会异常的。
(width:资源文件的宽;height:资源文件的高)
setDesignResolutionSize函数API:
| virtual |
设置设计分辨率尺寸
-
参数
-
width 设计分辨率的宽度 height 设计分辨率的高度 resolutionPolicy 你选择的期望的分辨率规则: [1] EXACT_FIT 伸展以适配屏幕: 如果你的设计分辨率的宽和高的比例与屏幕的分辨率的比例不同,你的游戏视图就会被拉伸。 [2] NO_BORDER 无边框适配屏幕: 如果你的设计分辨率的宽和高的比例与屏幕的分辨率的比例不同,你的游戏视图的两个区域将会被剪切。 [3] SHOW_ALL 有黑框适配屏幕: 如果你的设计分辨率的宽和高的比例与屏幕的分辨率的比例不同,两侧会出现两个黑色的边框。