13、Cocos2dx 3.0游戏开发找小三之3.0中的Director :郝萌主,一统江湖

重开发者的劳动成果,转载的时候请务必注明出处: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


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

你可能感兴趣的:(流程控制,游戏引擎,场景,cocos2d-x3.0,导演类)