AppDelegate分析 (cocos2d-x应用结构分析)

本文详细介绍了使用Cocos2d-x框架的应用程序启动过程,包括main函数的具体实现,AppDelegate类的作用,以及CCApplication类如何通过静态变量管理应用程序实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是TestCpp工程的main函数实现:

int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);


    // create the application instance
    AppDelegate app;
    CCEGLView* eglView = CCEGLView::sharedOpenGLView();
    eglView->setFrameSize(2048, 1536);
    // The resolution of ipad3 is very large. In general, PC's resolution is smaller than it.
    // So we need to invoke 'setFrameZoomFactor'(only valid on desktop(win32, mac, linux)) to make the window smaller.
    eglView->setFrameZoomFactor(0.4f);
    return CCApplication::sharedApplication()->run();
}


其中AppDelegate继承自CCApplication,

class  AppDelegate : private cocos2d::CCApplication
{

......

}

在CCApplication定义一静态变量sm_pSharedApplication,

static CCApplication * sm_pSharedApplication;


CCApplication的构造函数为:

CCApplication::CCApplication()
: m_hInstance(NULL)
, m_hAccelTable(NULL)
{
    m_hInstance    = GetModuleHandle(NULL);
    m_nAnimationInterval.QuadPart = 0;
    CC_ASSERT(! sm_pSharedApplication);
    sm_pSharedApplication = this;
}


所以静态变量sm_pSharedApplication指向AppDelegate 对象app。


静态成员函数sharedApplication可以获得该静态指针。

CCApplication* CCApplication::sharedApplication()
{
    CC_ASSERT(sm_pSharedApplication);
    return sm_pSharedApplication;
}


主函数中的这一句,

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

将启动应用的消息循环,开始处理消息,下面应用的逻辑就是由消息来驱动进行了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峻峰飞阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值