Cocos2D-x权威指南
上QQ阅读APP看书,第一时间看更新

3.2.3 实例:CCDirector类的使用

由于CCDirector类是一个控制的类别,从创建项目的模板中,就可以看到CCDirector类在游戏初始化的应用,如代码清单3-6所示。

代码清单3-6 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视图,设置是否显示每帧时间,设置每帧时间,然后创建并运行场景。这样初始化工作就完成了。

在游戏进入后台或者从后台返回时,分别调用相应的方法停止动画和开始动画,如代码清单3-7所示。

代码清单3-7 游戏进入后台或者从后台返回时导演类的工作

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

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

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

代码清单3-8 导演类的结束方法

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM==CC_PLATFORM_IOS)
    exit(0);
#endif
}

从以上例子可以看出,导演类就是一个管理游戏的指挥官。之后还会接触到一些CCDirector类的用法,包括坐标的转换等,这些会在触摸事件那部分做详细介绍。