cocos2d-x引擎的核心类-沈大海cocos2d-x教程7

在cocos2d-x应用启动以后会创建一个opengl窗口用来实现图形绘制和事件处理

draw() 该方法绘制每一个node

update() 该方法处理每一帧的逻辑变化

ccTouchesBegan() 处理用户的交互事件

/当cocos2d-x 应用启动以后会执行

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

我们看下具体代码:

int CCApplication::run()
{
PVRFrameEnableControlWindow(false);

// Main message loop:
MSG msg;
LARGE_INTEGER nFreq;
LARGE_INTEGER nLast;
LARGE_INTEGER nNow;

QueryPerformanceFrequency(&nFreq);
QueryPerformanceCounter(&nLast);

// Initialize instance and cocos2d.
if (!applicationDidFinishLaunching())
{
return 0;
}

CCEGLView* pMainWnd = CCEGLView::sharedOpenGLView();
pMainWnd->centerWindow();
ShowWindow(pMainWnd->getHWnd(), SW_SHOW);

while (1)
{
if (! PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
// Get current time tick.
QueryPerformanceCounter(&nNow);

// If it's the time to draw next frame, draw it, else sleep a while.
if (nNow.QuadPart - nLast.QuadPart > m_nAnimationInterval.QuadPart)
{
nLast.QuadPart = nNow.QuadPart;
CCDirector::sharedDirector()->mainLoop();
}
else
{
Sleep(0);
}
continue;
}

if (WM_QUIT == msg.message)
{
// Quit message loop.
break;
}

// Deal with windows message.
if (! m_hAccelTable || ! TranslateAccelerator(msg.hwnd, m_hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

return (int) msg.wParam;
}

CCDirector::sharedDirector()->mainLoop();
我们看到CCDirect实现了应用的主循环,我们看下循环中做的工作是什么

void CCDisplayLinkDirector::mainLoop(void)
{
if (m_bPurgeDirecotorInNextLoop)
{
m_bPurgeDirecotorInNextLoop = false;
purgeDirector();
}
else if (! m_bInvalid)
{
drawScene();

// release the objects
CCPoolManager::sharedPoolManager()->pop();
}
}

在循环中主要实现了绘制当前的场景和自动释放对象。

因此在cocos2d-x 开发中,无非我们编程实现 N个场景CCScene,然后根据用户交互或逻辑处理切换显示,如果游戏开发实现 菜单,帮助,暂停,游戏,高分等几个不同场景,用户交互后进行切换,在游戏场景中可能会有地图, NPC,道具等元素,这时候就需要添加多个CCLayer和CCSprite.

核心的类和功能

CCDirector gameLoop,实现场景绘制,切换

CCScene 场景类,每个场景可以理解为一个窗口显示内容的集合

CCLayer 图层,包括图片层,文字层,按扭层,动画层,每个层有坐标,显示内容,消息回调处理

CCSprite 精灵层,可以实现动画播放

CCAction 动作,控制图层运动,渐变,旋转等

---------------------------------------------------------------------------

CCObject-----------CCAction

-----------CCNode---------------CCLayer

|----------------CCScene

|-----------------CCSprite

继续关注blog.csdn.net/sdhjob @weibo.com/shunfengche

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值