在手机端开发,屏幕适配是个永恒的话题,主要由于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 有黑框适配屏幕: 如果你的设计分辨率的宽和高的比例与屏幕的分辨率的比例不同,两侧会出现两个黑色的边框。 |
原文地址:http://blog.csdn.net/gaoxin12345679/article/details/39203855