s2课程游戏主循环 .docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档