本系列学习教程使用的是cocos2d-x-2.1.4版本(截至目前为止最新稳定版) ,PC开发环境Windows7,C++开发环境VS2010

提到“导演”一词,想必读者最先联想到的是电影。作为娱乐产业,游戏领域和电影领域有很多类似之处,比如

在游戏领域中,也存在制作人的职位。不过,此时提及的“导演”可不是一个人,而是在渲染框架中,有一个类充当

着导演的角色。在开始介绍Cocos2D-X引擎中的“导演”之前,请大家先想想在电影行业中的导演,通常在一部电影

中承担怎样的工作。

一、导演类

CCDirector类是Coco2D-X游戏引擎的核心,它用来创建并且控制着主屏幕的显示,同时控制场景的显示时间和显

示方法。在整个游戏里一般只有一个导演。游戏的开始、结束、暂停都会调用CCDirector类的方法。CCDirector类具

有如下的功能。

<1> 初始化OpenGL会话。

<2> 设置OpenGL的一些参数和方法。

<3> 访问和改变场景以及访问Cocos2D-X的配置细节。

<4> 访问视图。

<5> 设置投影和朝向。

CCDirector类的继承关系如下图所示。

CCDisplayLinkDirector继承了CCDirector,是一个可以自动刷新的导演类。它支持60/1、1/30和1/15三种动画间

隔(帧间隔)。

在Cocos2D-X里面,在游戏的任何时间,只有一个场景对象实例处于运行状态,而导演就是流程的总指挥,它负

责游戏全过程的场景切换,这也是典型的面向对象和分层的设计原则。

需要说明的是:CCDirector是单例模式,调用CCDirector方法的标准方式如下。

// 获得导演类
CCDirector *pDirector = CCDirector::sharedDirector();

1、CCDirector类的成员数据

CCDirector类的主要保护成员数据如下图所示。

CCDirector类没有公共的成员数据,这些属性都不可以直接得到。

2、CCDirector类的函数

CCDirector类的主要公共函数如下图所示。

二、实例:CCDirector类的使用

1、由于CCDirector类是一个控制的类别,从创建项目的模版中,就可以看到CCDirector类在游戏初始化的应用,如

下代码所示。

bool AppDelegate::applicationDidFinishLaunching()
{
// 获得导演类
CCDirector *pDirector = CCDirector::sharedDirector(); //设置OpenGL视图
pDirector->setOpenGLView(CCEGLView::sharedOpenGLView()); // 设置是否显示每帧的时间
pDirector->setDisplayStats(true); // 设置每帧的时间
pDirector->setAnimationInterval(1.0 / 60); // 创建场景
CCScene *pScene = HelloWorld::scene(); // 运行场景
pDirector->runWithScene(pScene);
return true;
}      

这段代码出自AppDelegate.cpp文件中的applicationDidFinishLaunching函数,首先获得导演类指针,然后设置

OpenGL视图,设置是否显示每帧的时间,设置每帧的时间,然后创建并运行场景。这样初始化工作就完成了。

2、在游戏进入后台或者从后台返回时,分别调用相应的方法停止动画和声音以及开始动画和声音,如下代码所示。

void AppDelegate::applicationDidEnterBackground()
{
CCDirector::sharedDirector()->stopAnimation(); SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
} void AppDelegate::applicationWillEnterForeground()
{
CCDirector::sharedDirector()->startAnimation(); SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}

在手机有外部事件进入时,也会将当前界面暂停,比如来电话的时候。

3、在游戏结束的时候,同样需要使用导演类的结束函数,如下代码所示。

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
// 点击菜单按钮退出游戏
CCDirector::sharedDirector()->end();
}

这段代码在HelloWorldScene.cpp文件中。

从以上的例子可以看出,导演类就是一个管理游戏的指挥官。之后还会接触到一些CCDirector类的用法,包括坐

标的转换等,这些会在触摸事件那部分做详细介绍。

源码下载地址

【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用的更多相关文章

  1. 【Cocos2d-X开发学习笔记】第05期:渲染框架之布景层类(CCLayer)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4版本(截至目前为止最新稳定版) ,PC开发环境Windows7,C++开发环境VS2010 图层也是渲染框架中很重要的内容.场景类用来划分游戏的状态 ...

  2. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址

    驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...

  3. 步步为营 SharePoint 开发学习笔记系列总结

    转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...

  4. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  5. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

  6. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

  7. 高性能Cordova App开发学习笔记

    高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...

  8. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  9. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

随机推荐

  1. U3d 手游优化概述

    移动平台瓶颈 体积小 芯片要求改 功耗小 影响计算系能 带宽小 传输方面受限 性能优化 资源方面 美术方面 自带地形(地形是非常占用资源的) a.控制地形的分辨率 b.地形高度图尺寸小于257 c.地 ...

  2. 关于MVC EntityType has no key defined的问题

    关于MVC EntityType has no key defined的问题 在测试MVC时发现一个奇怪的问题,在Model中定义数据类时,如 public class UserInfo { publ ...

  3. JVM典型配置

    堆大小设置: JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存 限制.32位系统下,一般限制在1.5G~2G:64为 ...

  4. Delphi中使用TXMLDocument控件应注意的问题

    今天写了一个类,其中用到了TXMLDocument控件.这个控件我是要动态生成的. 但是却遇到了非常奇怪的问题,下面分享一下 procedure TMainForm.Button1Click(Send ...

  5. Codecs是以plugin的形式被调用的(显示中文的codec plugin文件是qcncodecs4.dll),可静态载入和动态载入

    作为非英语国家人员开发的类库,QT有充分的理由优先考虑支持Unicode和各国自定义字库编码.大家也知道了QT对软件Internationalization有一套完整的开发模型,包括专门为此写的lin ...

  6. Mac OS X Mavericks or Yosemite 安装Nginx、PHP、Mysql、phpMyAdmin

    翻译:http://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/ 最 ...

  7. hdoj 3062 Party(2-SAT)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 思路分析:将问题转换为2-SAT问题,需要注意的是将命题转换为有向图的方法:命题中A1, A2, ...

  8. uva 10651 - Pebble Solitaire(记忆化搜索)

    题目链接:10651 - Pebble Solitaire 题目大意:给出一个12格的棋盘,‘o'代表摆放棋子,’-‘代表没有棋子, 当满足’-oo'时, 最右边的棋子可以跳到最左边的位子,而中间的棋 ...

  9. POJ 2762 Going from u to v or from v to u? (Tarjan) - from lanshui_Yang

    Description In order to make their sons brave, Jiajia and Wind take them to a big cave. The cave has ...

  10. apache添加fastcgi支持

    A,安装apache服务器和fastcgi模块支持(ubuntu测试) sudo apt-get install apache2 sudo apt-get install libapache2-mod ...