读书笔记Cocos2d-x之Director

读书笔记Cocos2d-x之Director,第1张

概述Director Director是控制游戏流程的主要组件。 bool AppDelegate::applicationDidFinishLaunching() {     // 初始化导演类     auto director = Director::getInstance();     auto glview = director->getOpenGLView();     if(!glvie

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1074062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存