- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                s2课程游戏主循环 .doc
                    游戏主循环cocos2d-x 学习 MoonWarriorsx(四)小节
游戏主循环
终于抽时间把这个游戏写完了。由于没有自拍神器,所以把它移植到了 Android上,川我 的戴妃跑的很欢啊。自此,我算是完成了一个功能比较完善的游戏了。
麻雀虽小,五脏俱全,该有的都有,不该有的估计也有,嘿嘿。这儿天把写这个游戏的经 历和学习过程整理一下,多写儿篇博客,就当做记笔记了。
首先还是就我个人的理解,讲讲游戏引擎的处理流程。
其实游戏逻辑简单化就是一个死循环,如下:
bool g ame_is_runni ng = true;
while( gam e」s_running ) {
update_game ();
display_game ();
}
我们所看到的游戏画面,游戏咅乐,以及一些触控,输入等。在逻辑上就是这么一个死循 环。这个循环一直再跑,期间会处理一些列的事件,简化之就是上面的两个函数。 cocos2d-x引擎也是如此,所有的逻辑都是在这个主循环不实现的。下面看看COCOs2dx在 各平台上的主循环实现。
l.Win
看它的main.cpp
include main.h
#inc lude ../Cla sses/AppDele gate.h #incl ude CCEGLVi ew.h
USING N S CC;
MB	,
int API ENTRY _tWinM ain(HINSTANC E hInstance,
H INSTANCE hPr evlnstance,
LP TSTR IpCm dLine, int nCmdShow)
{
UNREFER ENCED_PARAME TER(hPrevlns tance);
U NREFERENCED_PARAMETER(lp CmdLine);
// create t he applicati on instance
AppDelega te app;
C CEGLView* eg IView = CCEG LView::share dOpenGLView(); eglVie w-setFrameS ize(2048,1536);
// T he resolutio n of ipad3 i s very large . In general, PCs resol ution is sma Her than it.
// So w e need to in voke setFra meZoomFactor ’(only valid on desktop(win32, macjinux)) to m ake the wind ow smaller.
eglView-setFrameZoom Factor(0.4f);
return CCApplicatio n::sharedApp lication()-〉run(};//注意这里
}
前面都不要关心,只是用來传递OpenGL窗U的,关键是最后一句,CC Application::sharedAppli cation()-〉ru n()o 看这个 run 闲数: int CCAppli cation::run()
{
PVRFra meEnableCont rolWindow(fa Ise);
//Main message loop: MS G msg;
LA RGEJNTEGER nFreq; LA RGEJNTEGER nLast; LA RGEJNTEGER nNow;
Que ryPerformanc nFreq); Q ueryPerforma nLast);
// Initialize instance an d cocos2d.
if (!appli cationDidFin ishLaunching ())
{
return 0;
}
CC EGLView* pMa inWnd = CCEG LView::share dOpenGLViewf); pMainW nd-〉centerWi ndow();
S howWindow(pM ainWnd-getH Wnd(), SW_SH OW);
while⑴//注意这里,主循环来了 {
if (SPeekMessage 0, 0, PM_RE MOVE))
{
// Get cu rrent time t ick.
QueryPer formanceCoun
//If its th e time to dr aw next fram e, draw it,else sleep a while.
if (n Now.QuadPart - nLast.Qua dPart  m_nA nimationlnte rval.QuadPar t)
{
nLast .QuadP
                
原创力文档
                        

文档评论(0)