cocos2d-x之导演
来源:互联网 发布:sap 知乎 编辑:程序博客网 时间:2024/04/28 19:30
导演(Director):
Director是cocos2d-x引擎的核心组件,它被设计为一个单例类,我们可以通过cocos2d::Director:getInstance()来获取导演类的句柄。
Director的功能主要由以下部分:
(1)OpenGL-ES的初始化
首先,在 AppControler.mm 的 application:didFinishLaunchingWithOptions 中,我们可以看到如下代码
// Init the CCEAGLView CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds] pixelFormat: kEAGLColorFormatRGBA8 depthFormat: GL_DEPTH24_STENCIL8_OES preserveBackbuffer: NO sharegroup: nil multiSampling: NO numberOfSamples: 0]; // Use RootViewController manage CCEAGLView _viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; _viewController.wantsFullScreenLayout = YES; _viewController.view = eaglView; ... ...
// IMPORTANT: Setting the GLView should be done after creating the RootViewController cocos2d::GLView *glview = cocos2d::GLView::createWithEAGLView(eaglView); cocos2d::Director::getInstance()->setOpenGLView(glview); cocos2d::Application::getInstance()->run();注意标红的部分,先实例化了一个 CCEAGLView 的对象,然后替换 _viewController 中的view类,并用 cocos2d::CLView:createWithEAGLView 方法,完成cocos2d::GLView的初始化工作,并调用Director的setOpenGLView,设置Render。
而在mac版下,主要通过以下代码来完成初始化设置工作
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); director->setOpenGLView(glview); }
(2)游戏场景的切换
// 游戏中得第一个场景由该函数显示 Director::getInstance()->runWithScene(cocos2d::Scene *scene) // push出下一个场景,pause上一个场景 适合弹出占用内存较小的Scene Director::getInstance()->pushScene(cocos2d::Scene *scene); // pop当前场景 Director::getInstance()->popScene(); // pop当前场景,直接显示 rootScene Director::getInstance()->popToRootScene(); // replace 当前场景,上一个Scene释放 Director::getInstance()->replaceScene(cocos2d::Scene *scene)其中 push 和 pop 的函数,是维护了堆栈,所有push到堆栈的Scene并不会立即释放,只有pop的Scene才会释放掉。所以,push到堆栈中得Scene不易过多,且最好都是占用内存较小的Scene。
如果是replaceScence翻页效果太单调了,可以参照一下场景翻页效果
(3)控制游戏的暂停、继续和退出
Director::getInstance()->pause(); // 暂停 Director::getInstance()->resume(); // 恢复 Director::getInstance()->isPaused(); //判断释放暂停 Director::getInstance()->end(); // 停止并退出游戏
(4)获取屏幕尺寸
/**returns visible size of the OpenGL view in points. * the value is equal to getWinSize if don't invoke * GLView::setDesignResolutionSize() */ Director::getInstance()->getVisbleSize();
0 0
- cocos2d-x之导演
- 【爱上cocos2d-x之四】导演CCDirector
- 【玩转cocos2d-x之五】导演类CCDirector
- Cocos2D-X 渲染框架之导演和场景
- 【玩转cocos2d-x之五】导演类CCDirector
- cocos2d-x中的导演类
- cocos2d-x 基础--导演,场景,层,精灵
- cocos2d-x导演,层,场景,精灵
- cocos2d-X 导演类(Director.h)API
- cocos2d-x:导演,场景,层,以及精灵的介绍
- cocos2d-x中的导演、场景、层和精灵
- cocos2d-x 3.0 导演,场景,层,以及精灵的介绍
- cocos2d-x的主循环和导演类
- Cocos2d-x学习笔记(二)-------->CCDirector导演类
- Cocos2d - x学习笔记 [1] 导演、舞台、精灵、层
- cocos2d-x-3.3-006-核心概念和相关类-导演
- Cocos2d-x学习笔记《06》—— 导演类Director
- cocos2d-x学习笔记【二】导演、场景、层。精灵介绍
- 五大方法减少跨站请求伪造(CSRF)攻击
- 我的第一个android应用——装逼神器《微博尾》
- asp生成json数据
- 正则表达式
- HDU 3667 —— Transportation(最小费用流,拆边)
- cocos2d-x之导演
- 制作swf字体文件
- 我是甘道夫、他是Rocker! 十一种程式设计师,你是哪一种?
- HDU 1426 Sudoku Killer DFS数独
- 使用淘宝中间件cobar实现mysql分库分表
- TFTP安装
- 什么是堆和栈,他们在哪里?(转)
- Hadoop HDFS over HTTP 2.4.1 - Using HTTP Tools
- 最短路径算法