重开发人员的劳动成果。转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967

游戏中的基本元素

在曾经文章中,我们具体介绍了游戏开发的概念以及 Cocos2d-x 与其它游戏引擎的不同之处。甚至已经学会了它与众不同的 内存管理机制。
想必大家已经非常期待開始探索 Cocos2d-x 游戏开发的世界了。


在后面的文章中,我们将结合详细的实例,从 Cocos2d-x 游戏开发的基本元素讲起。 
从这章開始,我会在学习引擎的过程中和大家一步步创建《找小三》这个游戏;

Director  :郝萌主,一统江湖

从英语字面上理解,这是一个"导演"类,Director 是控制游戏流程的主要组件。
回想引擎框架自己主动生成的HelloWorld 项目,程序生命周期中游戏载入期的最后一个方法 AppDelegate::applicationDidFinishLaunching,其代码例如以下所看到的:
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director//初始化导演类
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create(FontChina::G2U("郝萌主之找小三"));
director->setOpenGLView(glview);
} // turn on display FPS//启用 FPS 显示
director->setDisplayStats(false); // set FPS. the default value is 1.0/60 if you don't call this
//设置 FPS 上限。假设不加设置,则默认 FPS 上限为 60
director->setAnimationInterval(1.0 / 60); // create a scene. it's an autorelease object
//创建一个场景,场景是一个 autorelease 对象
auto scene = HelloWorld::createScene(); // run
//执行场景
director->runWithScene(scene); return true;
}

能够看到,事实上Director 的工作确实跟导演的工作很类似,Director 类主要负责下面工作。

1、游戏呈现方面的设定,包含设定游戏呈现的窗体、FPS 显示、默认帧率上限、纹理颜色位宽等。
2、切换当前的游戏场景,暂停或恢复游戏场景的执行。
总而言之,游戏在 Director 的管理下完毕了呈现设定与流程控制。

Director 扮演着武林萌主的角色,因而非常自然地採用了单例的设计模式,也就是说整个武林中就这一位。


在整个武林中、、、、哦,不,是在程序的不论什么地方,都能够通过以下的简单的代码訪问到: 
auto director = Director::getInstance();

在 Director 中,还定义了下面管理场景的方法。
runWithScene(Scene* scene):启动游戏,并执行 scene 场景。这种方法在主程序启动时第一次启动主场景时调用。

replaceScene(Scene* scene):直接使用传入的 scene 替换当前场景来切换画面,当前场景将被释放。这是切换场景时最经常使用的方法。

pushScene(Scene* scene): 将当前执行中的场景暂停并压入到代执行场景栈中, 再将传入的 scene 设置为当前执行场景。

popScene:释放当前场景。再从代执行场景栈中弹出栈顶的场景,并将其设置为当前执行场景。假设栈为空,则直接结束应用。与 pushScene 成对使用,能够达到形如由主界面进入设置界面,然后回到主界面的效果。


pause:暂停当前执行场景中的全部计时器和动作,场景仍然会显示在屏幕上。

resume:恢复当前执行场景中被暂停的计时器和动作。

它与 pause 配合使用。


end:结束场景。同一时候退出应用。

值得注意的一点是,以上三种切换场景的方法(replaceScene、pushScene、popScene)均是先将待切换的场景全然载入完 毕后,才将当前执行的场景释放掉。
所以,在新场景恰好全然载入完成的瞬间,系统中同一时候存在着两个场景,这将是对
内存的一个考验。若不注意的话,切换场景可能会造成内存不足。


PS:Director 的很多其它函数使用请查阅:cocos\2d\CCDirector.h


郝萌主友情提示:
游戏中找到了小三。可是现实中千万不要去找、、、

版权声明:本文博客原创文章。博客,未经同意,不得转载。

13、Cocos2dx 3.0三,找一个小游戏开发3.0中间Director :郝梦主,一统江湖的更多相关文章

  1. 8、Cocos2dx 3.0三,找一个小游戏开发3.0存储器管理的版本号

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27693365 复杂的内存管理 移动设备上的硬件资源十 ...

  2. 14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想

    发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30474393 Scene :场景 了解了Director ...

  3. 4、Cocos2dx 3.0三,找一个小游戏开发Hello World 分析

    尊重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27186557 Hello World 分析 打开新 ...

  4. 三、微信小游戏开发 --- 小游戏API调用Platform

    微信小游戏API Platform主要是Egret用于来调用平台的SDK的. 在Egret中使用接口定义Platform. Egret项目中默认的platform值是DebugPlatform. 发布 ...

  5. linux下开发,解决cocos2d-x中编译出现的一个小问题, undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'

    解决cocos2d-x中编译出现的一个小问题 对于cocos2d-x 2.×中编译中,若头文件里引入了#include "cocos-ext.h",在进行C++编译的时候会遇到例如 ...

  6. Pygame:编写一个小游戏 标签: pythonpygame游戏 2017-06-20 15:06 103人阅读 评论(0)

    大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...

  7. 使用PixiJS做一个小游戏

    PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...

  8. DirectX游戏开发——从一个小游戏開始

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/26364129 写在前面:自 ...

  9. Egret白鹭H5小游戏开发入门(三)

    前言: 在上一篇文章中着重介绍了H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明等等,那么今天主要是涉及到场景的创建,loading的修改等等的代码编写. 对于这一节,我在讲解的过 ...

随机推荐

  1. 【ASP.NET Web API教程】2.1 创建支持CRUD操作的Web API

    原文 [ASP.NET Web API教程]2.1 创建支持CRUD操作的Web API 2.1 Creating a Web API that Supports CRUD Operations2.1 ...

  2. Eclipse在点击运行后不能自动保存的解决

    今天在eclipse上写程序调试时,发现当我点击运行按键之后,并不能在运行前帮我自动保存,也就是说每次修改代码之后, 运行的还是前一次运行之前的代码,并不是修改之后的代码,因此通过在网上搜索解决方案之 ...

  3. [置顶] Vim用正则表达式进行批量修改

    vim可以设置 magic 这个东西, magic就是设置哪些元字符要加反斜杠哪些不用加的. 简单来说: magic(\m):除了 $ . * ^ 之外其他元字符都要加反斜杠. nomagic(\M) ...

  4. Delphi数组复制(只能使用System单元的Move函数)

    const AA : arrary[..] ,,,,) var BB : arrary[..] of byte; begin BB := AA ; {这样是错误的} Move(AA,BB,sizeof ...

  5. best javascript framework list -- 最好的js框架

    Javascript Framework List | Top Javascript Framework List | Best Javascript Framework List http://co ...

  6. Servlet API中文版

    基本类和接口 一.javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理 ...

  7. poj3468 A Simple Problem with Integers(线段树模板 功能:区间增减,区间求和)

    转载请注明出处:http://blog.csdn.net/u012860063 Description You have N integers, A1, A2, ... , AN. You need ...

  8. Xaml在string(串)定义常量和处理空间

    (1)基本使用方法 xaml中能够实例化各种对象,比方在ResourceDictionary中定义字符串常量: <ResourceDictionary xmlns="http://sc ...

  9. sort 使用 tab键 作为 分隔符_人生如梦_百度空间

    sort 使用 tab键 作为 分隔符_人生如梦_百度空间 sort 使用 tab键 作为 分隔符 For some reason "\t" doesn't work right, ...

  10. STM32M CUBE实现printf打印调试信息以及实现单字节接收

    在写单片机程序时我们一般喜欢使用printf来通过串口打印调试信息,但这个函数是不能够直接使用的.必须做点对库函数的修改. 具体project下载地址: http://download.csdn.ne ...