cocos2d-x入门介绍
cocos2d-x入门介绍
CCPoolManager是单体类,负责管理多个垃圾回收对象。其中CCArray *m_pReleasePoolStack 可以管理多个垃圾回收器。CCPoolManager 通过用 getCurReleasepool获取当前的垃圾回收器 m_pCurReleasePool,如果m_pCurReleasePool == NULL,就调用push创建一个新的垃圾回收器,并且还要加入刚才的那个m_pReleasePoolStack里面。而Pop方法会清理掉当前的这个垃圾回收器 m_pCurReleasePool,然后把刚才那个栈pop出来一个新的设置给当前这个垃圾回收器使用。
CCAutoreleasePool自动的垃圾回收器,通过一个动态数组autorelease管理加入的CCObject对象。
CCApplication是Cocos2d-x的应用主类,应用程序都要继承这个CCApplication,在main函数里需要定义一个CCApplication的对象并且执行它的run方法。
CCDirector导演类,主要做场景的管理和调度,通过创建CCActionManagement对象管理器,触摸消息分配器,键盘消息分配器,加速器等等一系列的方法来初始化,哦哦,还有刚才说过的那个CCPoolManager也要,用来创建一个垃圾回收器。
最重要的方法还是mainLoop方法,这个方法跟openGL,glut库里的mainLoop很像,步骤都是渲染场景,释放清理当前的垃圾回收器,不过这里是通过CCPoolManager来实现,而opengl就通过glClear来实现。
CCNode类,里面最重要的成员方法:
创建和释放: onEnter(),onExit()
增加和删除子对象:addchild(), removeChild()
返回所占矩形空间:bounddingBox(void);
运行相关动作:runAction(),runAllAction(),stopAction()等等。
还有比较重要的渲染填充物的:draw(),visit(),transform()
而且对CCNote这个对象的自定义画图一定要在draw方法内实现,因为引擎在这个函数调用的上下文进行了绘图环境的状态设置。
调度机制:通过注册scheduler方法加入,或者,通过CCNote::scheduleUpdate方法
第一种:其实最终还是调用调度器单体来实现的,而这个单体是在CCDirector初始化中生成的,在CCNote的构造函数中设置供CCNote使用。
调度单体的注册调度主要是创建一个定时器CCTimer对象并且将改CCNote对象和scheduler处理函数一起加入到该定时器对象中,以便后面调度使用。
垃圾回收机制:类似于java的垃圾回收机制,本质上就是让基类CCObject具有引用计数机制。
初始化CCObject的时候将引用计数设置为1,然后如果retain就加一,release就减一。
而且刚才说到了mainLoop的主要的工作是渲染场景,通过CCPoolManager释放和清理当前垃圾(看上面的运行机制)
用户评论