Director
Director是控制游戏流程的主要组件。
bool AppDelegate::applicationDIDFinishLaunching() {
// 初始化导演类
auto director = Director::getInstance();
auto glvIEw = director->getopenGLVIEw();
if(!glvIEw) {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_liNUX)
glvIEw = GLVIEwImpl::createWithRect("MyCppGame",Rect(0,designResolutionSize.wIDth,designResolutionSize.height));
#else
glvIEw = GLVIEwImpl::create("MyCppGame");
#endif
director->setopenGLVIEw(glvIEw);
}
// 启用FPS显示
director->setdisplayStats(true);
// 设置FPS上限。如果不加设置,则默认FPS上限为60
director->setAnimationInterval(1.0 / 60);
// 设置设计解决方案
glvIEw->setDesignResolutionSize(designResolutionSize.wIDth,designResolutionSize.height,ResolutionPolicy::NO_border);
Size frameSize = glvIEw->getFrameSize();
// 如果框架的高度大于中等大小的高度。
if (frameSize.height > mediumResolutionSize.height)
{
director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height,largeResolutionSize.wIDth/designResolutionSize.wIDth));
}
//如果框架的高度大于小尺寸的高度。
else if (frameSize.height > smallResolutionSize.height)
{
director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height,mediumResolutionSize.wIDth/designResolutionSize.wIDth));
}
// 如果框架的高度小于中等大小的高度。
else
{
director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height,smallResolutionSize.wIDth/designResolutionSize.wIDth));
}
register_all_packages();
// 创建一个场景,场景是一个autorelease对象
auto scene = HelloWorld::createScene();
// 运行场景
director->runWithScene(scene);
return true;
}
游戏在Director的管理下完成了呈现设定与流程控制。Director负责以下工作:
1.游戏呈现方面的设定,包括设定游戏呈现的窗口、FPS显示、默认帧率上限、纹理颜色位宽等
2.切换当前的游戏场景,暂停或恢复游戏场景的运行
3.Director采用了单例模式,可以通过: auto director = Director::getInstance(); 访问到
4.Director::runWithScene(Scene *scene):启动游戏,并运行scene场景。这个方法在主程序启动时第一次启动主场景时调用
5.Director::replaceScene(Scene *scene):直接使用传入的scene替换当前场景来切换画面,当前场景将被释放。这是切换场景时最常用的方法
6.Director::pushScene(Scene *scene):将当前运行中的场景暂停并压入到代执行场景栈中,再将传入的scene设置为当前运行场景
7.Director::popScene(voID):释放当前场景,再从代执行场景栈中d出栈顶的场景,并将其设置为当前运行场景。如果栈为空,则直接结束应用。与pushScene成对使用,可以达到形如主界面进入设置界面,然后回到主界面的效果。
8.Director::pause():暂停当前运行场景中的所有计时器和动作,场景仍然会显示在屏幕上
9.Director::resume():恢复当前运行场景中被暂停的计时器和动作。它与pause配合使用
10.Director::end():结束场景,同时退出应用
11.三种切换场景的方法(replaceScene、pushScene、popScene)均是先将待切换的场景完全加载完毕后,才将当前运行的场景释放掉。所以,在新场景恰好完全加载完毕的瞬间,系统中会同时存在着两个场景,所以切换场景可能会导致内存不足。
总结以上是内存溢出为你收集整理的读书笔记Cocos2d-x之Director全部内容,希望文章能够帮你解决读书笔记Cocos2d-x之Director所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)