cocos2d-x中的尺寸之一

               

cocos2d-x中的尺寸函数繁多,官方文档对各种尺寸没有很好的描述,网上文章更加寥寥,对尺寸和位置的理解如果不到位,写代码就非常困难,需要猜测尝试,效率低下。这个文章我将研究一些我所迷惑的尺寸函数,记录在此。

先看如下代码:

bool AppDelegate::applicationDidFinishLaunching() {    // initialize director    CCDirector* pDirector = CCDirector::sharedDirector();    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); pDirector->getWinSize(); pDirector->getWinSizeInPixels(); pDirector->getVisibleSize(); pEGLView->getFrameSize(); pEGLView->getDesignResolutionSize(); pEGLView->getVisibleSize();

在applicationDidFinishLaunching中,我们上面函数调用分别是什么意思呢,粗略的说是窗口大小呗,通过CCLOG我们把调试信息打印出来,代码变成如下:

CCSize size; size = pDirector->getWinSize(); CCLOG("width = %f height = %f, pDirector->getWinSize", size.width, size.height); size = pDirector->getWinSizeInPixels(); CCLOG("width = %f height = %f, pDirector->getWinSizeInPixels", size.width, size.height); size = pDirector->getVisibleSize(); CCLOG("width = %f height = %f, pDirector->getVisibleSize", size.width, size.height); size = pEGLView->getFrameSize(); CCLOG("width = %f height = %f, pEGLView->getFrameSize", size.width, size.height); size = pEGLView->getDesignResolutionSize(); CCLOG("width = %f height = %f, pEGLView->getDesignResolutionSize", size.width, size.height); size = pEGLView->getVisibleSize(); CCLOG("width = %f height = %f, pEGLView->getVisibleSize", size.width, size.height);

打印出来调试信息如下:


从调试信息看,默认的程序,这些尺寸都是一样的,是有点头疼吧,都是一样的,你搞那么多尺寸干嘛呢.......

为了让这些值不一样,我们试着加一些代码。加一行代码如下:


bool AppDelegate::applicationDidFinishLaunching() {    // initialize director    CCDirector* pDirector = CCDirector::sharedDirector();    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); pDirector->setContentScaleFactor(2.0f); CCSize size; size = pDirector->getWinSize(); CCLOG("width = %f height = %f, pDirector->getWinSize", size.width, size.height); size = pDirector->getWinSizeInPixels(); CCLOG("width = %f height = %f, pDirector->getWinSizeInPixels", size.width, size.height); size = pDirector->getVisibleSize(); CCLOG("width = %f height = %f, pDirector->getVisibleSize", size.width, size.height); size = pEGLView->getFrameSize(); CCLOG("width = %f height = %f, pEGLView->getFrameSize", size.width, size.height); size = pEGLView->getDesignResolutionSize(); CCLOG("width = %f height = %f, pEGLView->getDesignResolutionSize", size.width, size.height); size = pEGLView->getVisibleSize(); CCLOG("width = %f height = %f, pEGLView->getVisibleSize", size.width, size.height); 

增加了一行代码 pDirector->setContentScaleFactor(2.0f);这个函数从字面上的解释是设置缩放因子,参数为2,输出调试信息如下:


这个函数影响了pDirector->getWinSizeInPixels也就是说,让窗口的分辨率变大了,其他没变,这里的分辨率是cocos2dx自定义的这种分辨率,和屏幕分辨率没有关系

这样的话,程序运行的结果也变化了

猜你喜欢

转载自blog.csdn.net/fdgugfv/article/details/86622295