上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类的用法,包括坐标的转换等,这些会在触摸事件那部分做详细介绍。