cocos2d-x札记 (二)----CCDirector深入
2015-12-04 01:53
369 查看
以下内容基于cocos2d-x 2.2.5+Visual Studio 2012,除特别注明外均为原创,如有纰漏,请m本人 -_-
上一节已经弄明白了HelloWorld运行过程,相信大家对cocos2d-x有个大致了解
现在来看看CCDirector,中文名“导演”,官方对于她是这样介绍的:
我们还记得上一节中显示HelloWorld界面中是这样显示的
可以看到确实是通过CCDirector::sharedDirector()来实例化CCDirector的,那么来看看这个方法
这里本应该new一个CCDirector却new了一个CCDisplayLinkDirector,是怎么回事呢,来看看
可以看到CCDisplayLinkDirector是CCDirector的子类,CCDirector::sharedDirector()方法其实是一个向上转型的过程,所以我们用到的CCDirector其实是CCDisplayLinkDirector,对于CCDisplayLinkDirector官方是这样介绍她的:
来看看她具体做了什么
这节主要讲了CCDirector常用功能及局限性,实例化内部机制,下节详细看看cocos2d-x垃圾回收原理
博客其他文章列表
http://my.oschina.net
上一节已经弄明白了HelloWorld运行过程,相信大家对cocos2d-x有个大致了解
现在来看看CCDirector,中文名“导演”,官方对于她是这样介绍的:
这个类被用来创建和处理主窗体,并管理如何执行或何时执行场景. CCDirector也负责: --初始化OpenGL Context; --设置OpenGL像素格式(默认是RGB565); --设置OpenGL缓冲深度; --设置投影(projection)规则(默认3D); --设置方向(默认竖直方向); 由于CCDirector是个单例,所以通过CCDirector::sharedDirector()来访问方法;
我们还记得上一节中显示HelloWorld界面中是这样显示的
bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector* pDirector = CCDirector::sharedDirector(); CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); .... // turn on display FPS pDirector->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60); // create a scene. it's an autorelease object CCScene *pScene = HelloWorld::scene(); // run pDirector->runWithScene(pScene); return true; }
可以看到确实是通过CCDirector::sharedDirector()来实例化CCDirector的,那么来看看这个方法
CCDirector* CCDirector::sharedDirector(void) { if (!s_SharedDirector) { s_SharedDirector = new CCDisplayLinkDirector(); s_SharedDirector->init(); } return s_SharedDirector; }
这里本应该new一个CCDirector却new了一个CCDisplayLinkDirector,是怎么回事呢,来看看
class CCDisplayLinkDirector : public CCDirector { public: CCDisplayLinkDirector(void) : m_bInvalid(false) {} virtual void mainLoop(void); virtual void setAnimationInterval(double dValue); virtual void startAnimation(void); virtual void stopAnimation(); protected: bool m_bInvalid; };
可以看到CCDisplayLinkDirector是CCDirector的子类,CCDirector::sharedDirector()方法其实是一个向上转型的过程,所以我们用到的CCDirector其实是CCDisplayLinkDirector,对于CCDisplayLinkDirector官方是这样介绍她的:
CCDisplayLinkDirector是一个显示刷新频率的同步定时器导演 她的功能和局限性分别是: 是一个调度定时器,绘制并同步显示刷新频率 只支持1/60,1/30,1/15这三个时间间隔动画
来看看她具体做了什么
bool CCDirector::init(void) { ... // create autorelease pool CCPoolManager::sharedPoolManager()->push(); }这个CCPoolManager就是cocos2d-x中的垃圾回收管理器了,这里先不详细解释垃圾回收机制
这节主要讲了CCDirector常用功能及局限性,实例化内部机制,下节详细看看cocos2d-x垃圾回收原理
博客其他文章列表
http://my.oschina.net
相关文章推荐
- cocos2d-x 学习笔记3
- COCOS2D-3.9 FileUtils 分析(一)
- 【Cocos2d-x学习记录】基于Mac OS iPhone开发环境搭建
- cocos2d 消息映射
- quick-cocos2dx修改java文件后如何生效
- cocos2d-x getVisibleSize , getVisibleOrigin 和坐标位置日记
- Cocos2D中Node的userObject实例变量使用时一个要注意的地方
- Cocos2D中Node的userObject实例变量使用时一个要注意的地方
- Cocos2D中Node的userObject实例变量使用时一个要注意的地方
- Cocos2d-x3.0 新成员Value,Vector,Map详解
- cocos-js 环境搭建
- cocos2d js 对android和ios混编记录
- cocos2dx 工具
- cocos2d-js添加360广告联盟插屏(通过jsb反射机制)
- 我在Cocos2d-x luabinding box2d时挖到过的坑
- cocos2d-x XX_selector函数体中无法访问类的成员变量问题
- Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题
- 本机上多个cocos2dx版本下怎么创建自己想要的版本?
- cocos2dx-lua方法笔记
- cocos2d-lua敏感词过滤函数