《游戏觉醒之Cocos2d-x3.10游戏开发》- 导演(Director)

导演,顾名思义就是一部电影一场话剧制作人&领导者,Cocos2d中的导演(Director)也是负责同样的工作,和电影里的导演唯一不同的就是游戏里只有一个导演,没有副导演...呵呵哒~

Cocos2d中的Director就是God,控制着整款游戏,下面我们看一下怎么使用Director类。

通过上一章我们了解了Cocos2d引擎的生命周期,我们得知初始化游戏运行的方法是:  applicationDidFinishLaunching

 
 
  1. bool AppDelegate::applicationDidFinishLaunching() {
  2.    // 初始化 director
  3.    auto director = Director::getInstance();
  4.    auto glview = director->getOpenGLView();
  5.    if(!glview) {
  6.        glview = GLViewImpl::createWithRect("HelloCpp", Rect(0, 0, 960, 640));
  7.        director->setOpenGLView(glview);
  8.    }
  9.    director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);
  10.    // 打开FPS(每秒传输帧数(Frames Per Second)),也就是左下角的那些信息
  11.    director->setDisplayStats(true);
  12.    // 设置FPS的帧间隔时间差为60分之一秒,从而期望FPS为60帧。
  13.    director->setAnimationInterval(1.0 / 60);
  14.    FileUtils::getInstance()->addSearchPath("res");   // 将res目录加入文件搜索路径
  15.    // 创建一个场景
  16.    auto scene = HelloWorld::createScene();
  17.    // 运行场景
  18.    director->runWithScene(scene);
  19.    return true;
  20. }

通过这段初始化游戏我们看到

auto director =Director::getInstance();

创建了一个Director类,然后下面关于OpenGL相关代码我们就不细讲解了,大致说一下不懂的,自行Google,OpenGL是一款跨语言、跨平台的图像程序接口,Cocos2d引擎将OpenGL复杂的使用进行大量的封装,让我们使用起来变得非常简单,不用了解OpenGL具体是怎么使用。

在继续往下读代码发现一个叫做场景(Scene)的东西,下一章我们会讲到,这里我们先理解为电影里的场景。

最后调用

director->runWithScene(scene);

运行这个场景,可以理解成导演说开拍!好了,游戏运行成功了,下面我们结合上一章 Cocos2d生命周期来看下面的代码

 
 
  1. // This function will be called when the app is inactive. When comes a phone call,it's be invoked too
  2. void AppDelegate::applicationDidEnterBackground() {
  3.    Director::getInstance()->stopAnimation();
  4.    // if you use SimpleAudioEngine, it must be pause
  5.    // SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
  6. }

通过上一章我们知道applicationDidEnterBackground方法在游戏进入后台的时候进行触发,例如玩着玩游戏,突然女友打电话过来,游戏自动进入了后台,就调用了这个方法,通过代码我们看到这个方法里面有这么一段代码

  
  
  1. Director::getInstance()->stopAnimation();

通过名字也可以看到的到,这句代码调用了Director类的stopAnimation方法,可以理解成导演说:卡!暂停!暂停开拍!

  
  
  1. // this function will be called when the app is active again
  2. void AppDelegate::applicationWillEnterForeground() {
  3.    Director::getInstance()->startAnimation();
  4.    // if you use SimpleAudioEngine, it must resume here
  5.    // SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
  6. }

接下来我们看applicationWillEnterForeground方法,也就是女友把电话挂了,我们又可以开始玩游戏了,startAnimation方法就是继续刚才的游戏,也就是导演说:继续~ ^^


下一章我们开始讲解电影中的场景


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值