cocos2d-x之CCDirector类1

1 cocos2d-x之CCDirector类1

问题1:CCDirector类是什么时候创建?

问题2:cocos2d-x应用窗口的消息回调函数是如何和CCDirector类创建连接起来的?

1、复习上一节:

创建AppDelegate对象后,全局唯一AppDelegate对象会执行run函数进行消息循环处理;创建CCEGLView对象后,该全局唯一CCEGLVie对象会处理win消息回调,也就是LRESULTCCEGLView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)。若不懂请回看第一节。

2、创建窗口对象后,第一次激活窗口显示的时,CCEGLView::WindowProc函数会做相应处理,关键代码就是444行

CCApplication::sharedApplication()->applicationWillEnterForeground();

典型分析如下:

1)444行这块代码是典型的多态,用父类指针执行子类对象。

2)没有C++基础的同学,请思考,多态实现的三个条件,不管是C还是Java都一样。

(1有继承,2要虚函数重写,3父类指针指向子类对象),

3)多态的结果就是,从父类CCApplication,去执行子类AppDelegate::applicationWillEnterForeground()函数。

4)AppDelegate::applicationWillEnterForeground()函数会执行,CCDirector::sharedDirector()->startAnimation();就会被调用。

5)CCDirector::sharedDirector()就是这句话,第一次调用,开始产生CCDirector类的对象。

我们再看该函数内做了什么。

注意一点细节的是,创建CCDisplayLinkDirector类对象,继承关系如下:

classCCDisplayLinkDirector : public CCDirector。其中CCDisplayLinkDirector类重写了以下几个方法

    virtualvoid mainLoop(void);

    virtualvoid setAnimationInterval(double dValue);

    virtualvoid startAnimation(void);

    virtual void stopAnimation()。

6)我们再看s_SharedDirector->init()函数做了什么。

狐狸的尾巴终于露出来了。就是在这个在bool CCDirector::init(void)函数里面,cocos2d-x框架初始化了各种各样的器件。王保明bombing提醒你,一种典型的组合设计方法清晰可见、敬佩之情悠然而生。

在这里你仔细看看吧。最值得你看的地方。

// scheduler cocos2d-x中的调度器

m_pScheduler = newCCScheduler();

// action manager cocos2d-x中的动作管理器

m_pActionManager = newCCActionManager();

// touchDispatcher cocos2d-x中的触屏管理器

m_pTouchDispatcher = newCCTouchDispatcher();

// KeypadDispatcher pad派发器

  m_pKeypadDispatcher = newCCKeypadDispatcher();

 

// create autorelease pool 内存自动清理管理器

CCPoolManager::sharedPoolManager()->push();

 

很多公司就是在这个地方进行cocos2d-x框架源码功能增强。比如:底层数据的加密;硬件设备调度等。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值