大佬教程收集整理的这篇文章主要介绍了cocos2d-x3.0中图片分辨率自动适配设置以及源码,原理分析。,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
http://www.2cto.com/kf/201407/321086.html
和以前的版本不太一样,每当我们打开cocos2d-x3.0的新建工程时,都会看到其中加载的图片比较小,只占据了大概四分之一的空间,如下图所示:
视觉效果不太好,我就喜欢把它调整为全屏幕显示,且能够自动适应与各种不同的分辨率下,于是就找着了相关的代码,发现和以前的版本设置还是有一定的区别。不过核心内容没有变化。由于网上没有新版本的资料,相关的个别信息也很很系统和完整,自己研究了搞清楚了还是决定写出来归纳下。
可以在AppDelegate::applicationDidFinishLaunching()的方法中先获取导演类的单例,然后通过导演类的单例获取glview对象,即为openglview对象,如果不存在(glview为空),就重新创建一个,如下代码所示<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cD4gYXV0byBkaXJlY3RvciA9CkRpcmVjdG9yOjpnZXRJbnN0YW5jZSgpOzwvcD4KPHA+ICAgCmF1dG8gZ2x2aWV3ID0gZGlyZWN0b3ItPmdldE9wZW5HTFZpZXcoKTs8L3A+CjxwPiAgIAppZighZ2x2aWV3KSB7PC9wPgo8cD4gICAgICAgIGdsdmlldyA9CkdMVmlldzo6Y3JlYXRlKA=="My Game");
director->setOpenGLView(glview);
}
在setOpenGLView(glview)函数对进行了设置_openGLView,其中包括很多配置信息,含有取得我们设置屏幕大小适配相关的函数_winSizeInPoints = _openGLView->getDesignResolutionSize(),在里面取出来了我们可以设置的分辨率配置信息。
代码如下所示:
1
2
@H_616_37@
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@H_450_81@
25
26
27
28
29
30
31
32
33
34
35
36
|
void
Director::setOpenGLView(GLView *openGLView)
// Configuration. Gather GPU info
conf->gatherGPUInfo();
(_openGLView)
_openGLView->release();
_openGLView = openGLView;
_openGLView->retain();
// set size
_winSizeInPoints = _openGLView->getDesignResolutionSize();
createStatsLabel();
(_openGLView)
setGLDefaultValues();
}
_renderer->initGLView();
(_eventDispatcher)
}
}
}
|
const
Size& GLViewProtocol::getDesignResolutionSize()
const
return
_designResolutionSize;
其中的_designResolutionSize是通过GLViewProtocol::setDesignResolutionSize()函数设置的,而这个函数是设置自动适配分辨率大小的关键函数,代码如下所示:
|