您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x应用窗口相关源码剖析1

2014-02-25 19:53 423 查看

1 CCApplicationProtocol、CCApplication、AppDelegate类实现源码分析

什么是框架,框架最低要求

理论:

1)框架定义了一些协议(功能的抽象);目的:解耦合,通过函数指针实现。

2)框架实现了这层协议的调用,框架具有集成功能。

3)上层应用按照要求,去实现框架协议

代码兑现:

1)CCApplicationProtocol类定义了一套接口

2)CCApplication 实现了接口规则的调用

3)AppDelegate实现了接口

4)在CCApplication::run()利用多态特性,实现父类代码去调用子类(AppDelegate)重载函数;这也是多态的重要意义。典型的工程开发项目设计思路

问题1:是谁去调用了AppDelegate类的函数重载的函数?

virtualbool applicationDidFinishLaunching();

virtualvoid applicationDidEnterBackground();

virtualvoid applicationWillEnterForeground();

答案:

1)类继承分析:

classCC_DLL CCApplication : public CCApplicationProtocol

class AppDelegate : private cocos2d::CCApplication

AppDelegate->CCApplication->CCApplicationProtocol

2)在CCApplication中实现了协议的调用;

CCApplication::run()函数实现了win消息窗体创建及消息注册。

CCDirector::sharedDirector()->mainLoop();//后续分析

问题2:是谁调用了CCApplication::run()?

return CCApplication::sharedApplication()->run();

问题3:代码实践



23行,AppDelegate app;这句话能去掉吗?

28行,return CCApplication::sharedApplication()->run();换成app.run();



问题4:应用程序对象是什么时候被创建的

CCApplication *CCApplication::sm_pSharedApplication = 0;

CCApplication::CCApplication()

: m_hInstance(NULL)

, m_hAccelTable(NULL)

{

m_hInstance =GetModuleHandle(NULL);

m_nAnimationInterval.QuadPart = 0;

CC_ASSERT(! sm_pSharedApplication);

sm_pSharedApplication = this;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: