导演,顾名思义就是一部电影一场话剧制作人&领导者,Cocos2d中的导演(Director)也是负责同样的工作,和电影里的导演唯一不同的就是游戏里只有一个导演,没有副导演...呵呵哒~
Cocos2d中的Director就是God,控制着整款游戏,下面我们看一下怎么使用Director类。
通过上一章我们了解了Cocos2d引擎的生命周期,我们得知初始化游戏运行的方法是: applicationDidFinishLaunching
bool AppDelegate::applicationDidFinishLaunching() {
// 初始化 director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::createWithRect("HelloCpp", Rect(0, 0, 960, 640));
director->setOpenGLView(glview);
}
director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);
// 打开FPS(每秒传输帧数(Frames Per Second)),也就是左下角的那些信息
director->setDisplayStats(true);
// 设置FPS的帧间隔时间差为60分之一秒,从而期望FPS为60帧。
director->setAnimationInterval(1.0 / 60);
FileUtils::getInstance()->addSearchPath("res"); // 将res目录加入文件搜索路径
// 创建一个场景
auto scene = HelloWorld::createScene();
// 运行场景
director->runWithScene(scene);
return true;
}
通过这段初始化游戏我们看到
auto director =Director::getInstance();
创建了一个Director类,然后下面关于OpenGL相关代码我们就不细讲解了,大致说一下不懂的,自行Google,OpenGL是一款跨语言、跨平台的图像程序接口,Cocos2d引擎将OpenGL复杂的使用进行大量的封装,让我们使用起来变得非常简单,不用了解OpenGL具体是怎么使用。
在继续往下读代码发现一个叫做场景(Scene)的东西,下一章我们会讲到,这里我们先理解为电影里的场景。
最后调用
director->runWithScene(scene);
运行这个场景,可以理解成导演说开拍!好了,游戏运行成功了,下面我们结合上一章 Cocos2d生命周期来看下面的代码
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground() {
Director::getInstance()->stopAnimation();
// if you use SimpleAudioEngine, it must be pause
// SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}
通过上一章我们知道applicationDidEnterBackground方法在游戏进入后台的时候进行触发,例如玩着玩游戏,突然女友打电话过来,游戏自动进入了后台,就调用了这个方法,通过代码我们看到这个方法里面有这么一段代码
Director::getInstance()->stopAnimation();
通过名字也可以看到的到,这句代码调用了Director类的stopAnimation方法,可以理解成导演说:卡!暂停!暂停开拍!
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
Director::getInstance()->startAnimation();
// if you use SimpleAudioEngine, it must resume here
// SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}
接下来我们看applicationWillEnterForeground方法,也就是女友把电话挂了,我们又可以开始玩游戏了,startAnimation方法就是继续刚才的游戏,也就是导演说:继续~ ^^
下一章我们开始讲解电影中的场景