这是游戏程序的入口,主要用于游戏程序的逻辑初始化,并创建运行程序的入口界面(即第一个游戏界面场景)。

里面有三个方法:

//
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的更多相关文章

  1. cocos2d-x v3.2 FlappyBird 各个类对象详细代码分析(7)

    今天我们介绍最后两个类 GameOverLayer类 GameLayer类 GameLayer类是整个游戏中最重要的类,由于是整个游戏的中央系统,控制着各个类(层)之间的交互,这个类中实现了猪脚小鸟和 ...

  2. Spring Boot 2.x 启动全过程源码分析(上)入口类剖析

    Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boot 为什么这么简便的奥秘. 本篇基于 Spring Boot 2.0.3 版本进 ...

  3. Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析

    前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...

  4. SpringBoot主程序类,主入口类

    主程序类,主入口类 /** * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */ @SpringBootApplication publi ...

  5. 【转载】Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析

    前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...

  6. SpringBoot入门(三)——入口类解析

    本文来自网易云社区 上一篇介绍了起步依赖,这篇我们先来看下SpringBoot项目是如何启动的. 入口类 再次观察工程的Maven配置文件,可以看到工程的默认打包方式是jar格式的. <pack ...

  7. 入口类和@SpringBootApplication

    SpringBoot通常有一个名为*Application的入口类,入口类里有一个标准的Java应用的入口方法,main方法,在该方法中使用SpringApplication.run(xxxxxApp ...

  8. cocos2dx[3.2](8) 数学类Vec2/Size/Rect

    数学类Vec2.Size.Rect,是cocos2dx中比较常用的类. 比如设置图片位置,设置图片大小,两图片的碰撞检测等等. 比起2.x版本,在3.x中本质上其实没有太大的变化,主要的变化就是将全局 ...

  9. Cocos2d-x 3.0final 终结者系列教程05-AppDelegate入口类

    下面是Cocos2d-x的程序入口: class  AppDelegate : private cocos2d::Application { public: AppDelegate(); virtua ...

随机推荐

  1. Js 实现 多个tr 点击变色,再点击还原

    我用的是渲染页面,将自定义的值作为一个表示符判断当前状态 <!DOCTYPE html> <html> <head> <meta charset=" ...

  2. UVA - 11996 Jewel Magic (Treap+二分哈希)

    维护一个01序列,一共四种操作: 1.插入一个数 2.删除一个数 3.反转一个区间 4.查询两个后缀的LCP 用Splay或者Treap都可以做,维护哈希值,二分求LCP即可. 注意反转序列的时候序列 ...

  3. nginx第二天

    nginx配置文件 配置文件结构 全局配置(user.worker_processes.error_log.pid) events(网络连接相关,worker_connections) http(最重 ...

  4. CSS3背景定位 background-origin

    background-size 大小 语法 background-size :[ <length> | <percentage> | auto ]{1,2} | cover | ...

  5. Vue+NodeJS+ElementUI 的简单示例

    演示所使用到的工具:谷歌浏览器.HBuilder.cmd命令窗口.nodejs(自带npm). 1.先使用 vue create 命令创建一个项目,等待创建完成. 2.切换到项目中. 3.使用 vue ...

  6. Java-Web servlet控制器的引入

    一.建包 二.建立实体类 参考二维表,考虑各个字段的名字.类型 private String id; private String name; private String address; publ ...

  7. 软件测试课程--安装QTP后java环境变量冲突

    很多学习性能测试的朋友们都会有这样的问题,安装QuickTest Professional11之后,类似于eclipse.pycharm打开弹出报错窗口,命令行(CMD)也无法正常显示javac.ja ...

  8. eclipse svn同步过滤掉某些不需要同步的文件

    注:这里说的svn是eclipse里svn插件 默认情况下,我们在点击svn同步时,总是会把一些不需要的目录和文件也给同步了,这样我觉得很晃眼睛,所以在这里说下怎么去去掉不想同步的文件 1.默认同步下 ...

  9. DOM导航与DOM事件

    HTML DOM 导航 通过 HTML DOM,能够使用节点关系在节点树中导航. ㈠HTML DOM 节点列表 getElementsByTagName() 方法返回节点列表.节点列表是一个节点数组. ...

  10. TTTTTTTTTTTTTTT poj 2932 Coneology 平面扫描+STL

    题目链接 题意:有n个圆,圆之间不存在相交关系,求有几个不被其他任何圆包含的圆,并输出圆的编号: #include <iostream> #include <cstdio> # ...