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;
}
相关文章推荐
- cocos2dx 文件处理
- cocos2d-x 血泪史(-3) winrt 的环境配置单
- cocos2d中的光照效果
- quick-cocos2d-x API 以及 参考手册
- 在quick-cocos2d-x中创建新工程
- COCOSBuilder 源码, cocos2d 和cocos2dx混编
- 设置 quick-cocos2d-x 在 Mac 下的编译环境
- cocos2d-x 常见的几种特效
- Mac下搭建quick cocos2d-x编译环境
- 如何学习 quick-cocos2d-x
- Cocos2d-x 内存管理中retain() 、autoRelease()、release()
- Cocos2d-x V2.2.2 性能分析和透明处理
- 小鬼学cocos2dX笔记01——创建精灵动画(二)
- cocos2dx 3.0 ----- __Array
- 惊天发现,cocos2d居然有个开源的lua框架,作者怎么这么低调?
- 小鬼学cocos2dX笔记01——创建精灵动画(一)
- cocos2d-x中的坐标系辨析
- cocos2dx 3.0 ---base
- 如何在cocos2d c++代码中调用lua以及探究
- WebStorm——cocos2d-html5专用IDE