cocos2dx[3.2](4) 入口类AppDelegate
这是游戏程序的入口,主要用于游戏程序的逻辑初始化,并创建运行程序的入口界面(即第一个游戏界面场景)。
里面有三个方法:
//
applicationDidFinishLaunching(); //逻辑初始化
applicationDidEnterBackground(); //切换到后台
applicationWillEnterForeground(); //切换到前台
//
源码分析:
//
bool AppDelegate::applicationDidFinishLaunching() {
//初始化一个导演, 只能有一个导演
auto director = Director::getInstance();
//使用OpenGLView
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create("My Game");
glview->setFrameSize(480, 320); //程序窗口标题
director->setOpenGLView(glview);
}
//屏幕适配,设置游戏设计的分辨率
glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL);
//开启状态显示, 帧数,精灵数等
director->setDisplayStats(true);
//刷新频率,每秒60帧。
director->setAnimationInterval(1.0 / 60);
//创建一个场景HelloWorld,这是游戏程序的第一个界面
auto scene = HelloWorld::createScene();
//运行
director->runWithScene(scene);
return true;
}
// 切换到后台
void AppDelegate::applicationDidEnterBackground() {
//暂停游戏
Director::getInstance()->stopAnimation();
//暂停音乐
SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}
// 切换到前台
void AppDelegate::applicationWillEnterForeground() {
//继续游戏
Director::getInstance()->startAnimation();
//继续音乐
SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}
//
讲到这里,大家可能会感到疑惑。为什么会设置了两次分辨率大小呢?
setFrameSize(480, 320);
setDesignResolutionSize(480,320,ResolutionPolicy::SHOW_ALL);
朋友们,这两个的意义是不一样滴。
setDesignResolutionSize 是设置了我们游戏设计时候的分辨率,即想要适配的宽480高320的屏幕比例。也就是说设计者初衷的游戏分辨率屏幕大小。但是对于每个用户来说,他们使用的设备不一定是(480,320)的,比如手机有大有小。而后面的 ResolutionPolicy::SHOW_ALL 参数意思是按照原比例(480/320)进行放缩以适配设备的实际屏幕。
setFrameSize(480, 320) 则是设置我们预想设备的屏幕大小,也就是应用程序窗口的大小。
以下贴了几张对比图,加深理解。
1、这是原图片大小,窗口大小为480 * 320。

2、若设置窗口大小为setFrameSize(960, 640),而不设置设计分辨率放缩比例ResolutionPolicy::SHOW_ALL 的情况下,图片不放缩,原图还是480 * 320。

3、设置了 ResolutionPolicy::SHOW_ALL 之后,图片放缩到适配整个屏幕960 * 640 了。

cocos2dx[3.2](4) 入口类AppDelegate的更多相关文章
- cocos2d-x v3.2 FlappyBird 各个类对象详细代码分析(7)
今天我们介绍最后两个类 GameOverLayer类 GameLayer类 GameLayer类是整个游戏中最重要的类,由于是整个游戏的中央系统,控制着各个类(层)之间的交互,这个类中实现了猪脚小鸟和 ...
- Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boot 为什么这么简便的奥秘. 本篇基于 Spring Boot 2.0.3 版本进 ...
- Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...
- SpringBoot主程序类,主入口类
主程序类,主入口类 /** * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */ @SpringBootApplication publi ...
- 【转载】Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...
- SpringBoot入门(三)——入口类解析
本文来自网易云社区 上一篇介绍了起步依赖,这篇我们先来看下SpringBoot项目是如何启动的. 入口类 再次观察工程的Maven配置文件,可以看到工程的默认打包方式是jar格式的. <pack ...
- 入口类和@SpringBootApplication
SpringBoot通常有一个名为*Application的入口类,入口类里有一个标准的Java应用的入口方法,main方法,在该方法中使用SpringApplication.run(xxxxxApp ...
- cocos2dx[3.2](8) 数学类Vec2/Size/Rect
数学类Vec2.Size.Rect,是cocos2dx中比较常用的类. 比如设置图片位置,设置图片大小,两图片的碰撞检测等等. 比起2.x版本,在3.x中本质上其实没有太大的变化,主要的变化就是将全局 ...
- Cocos2d-x 3.0final 终结者系列教程05-AppDelegate入口类
下面是Cocos2d-x的程序入口: class AppDelegate : private cocos2d::Application { public: AppDelegate(); virtua ...
随机推荐
- 认识配置文件schema.xml(managed-schema)
1.schema文件是在SolrConfig中的架构工厂定义,有两种定义模式: 1.1.默认的托管模式: solr默认使用的就是托管模式.也就是当在solrconfig.xml文件中没有显式声明< ...
- java 8 foreach获取索引
当 forEach 需要索引 https://segmentfault.com/a/1190000007881498 或者采用 List<string> stringList = new ...
- UVA - 10829 L-Gap Substrings (后缀自动机+线段树启发式合并)
题意:统计一段字符串中形如UVU的子串个数(其中V的长度固定为g). 问题等价于求满足$g+1\leqslant |j-i|\leqslant g+LCP(i,j)$的后缀(i,j)的对数,即$\su ...
- POJ - 2774 Long Long Message (后缀数组/后缀自动机模板题)
后缀数组: #include<cstdio> #include<algorithm> #include<cstring> #include<vector> ...
- winform的Textbox设置只读之后使用ForeColor更改颜色
winform的Textbox设置只读之后设置ForeColor更改颜色无效.这是 TextBox 默认的行为. 解决方法:设置为只读之后,修改控件的BackColor,再设置ForeColor就可以 ...
- Mybatis中通过父类/接口来限定类的别名(TypeAlias)配置
- layer .net中使用
在.net中使用layer得用ajax来请求一般处理程序来得到想要的json数据,直接上代码 html: <head runat="server"> <meta ...
- ZOJ-3777-Problem Arrangement(状压DP)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3777 题意: 输入n和m,接下来一个n*n的矩阵,a[i][j]表示第i道 ...
- JavaWeb_Get和Post方法传输数据区别
Get方法和Post方法传输数据区别: 传送门 GET在浏览器回退时是无害的,而POST会再次提交请求 GET产生的URL地址可以被Bookmark,而POST不可以 GET请求会被浏览器主动cach ...
- Vue页面刷新方法(子组件改变数据后兄弟组件刷新,不闪烁)
todo https://blog.csdn.net/qq_40571631/article/details/91533248