您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x游戏引擎开发之流程

2012-08-23 01:51 239 查看
自己接触过很多技术,现在很模糊,现在想想,写一篇博客关于这个技术的话,可能自己的理解和记忆都会更深,并且可以提供学习的人一点资料和见解。coco2d-x,可以说是想从事手机游戏开发的人,一个最好的起点,我也打算好好研究下cocos2d-x,并打算把学习过程和想法记录下。我们开始的平台就考虑windws。

当我们生成一个cocos2d-x的项目后在项目文件夹下面的win32文件夹下的main.cpp,这个就是游戏最开始的入口点。我们进去可以看到熟悉的_tWinMain()函数,在这个函数中,就两行 AppDelegate app;定义了一个app,cocos2d::CCApplication::sharedApplication().run();调用这个app的run方法。

AppDelegate 是继承 CCApplication,而我们进入到CCApplication::sharedApplication()中可以发现他返回的就是一个CCApplication 的对象。调用的run()方法之后,我大概能想到,是在让程序跑起来。这里,我们就得有个问题,cocos2d-x引擎是怎么和我们的app:AppDelegate 联系起来的?这里我们需要看看CCApplication 的构造方法中来,看了这个函数之后,似乎我们就可以把一切联系起来了。一个启动流程,思考三分钟。

如果,你上面确实在思考的,你马上感想到的:

1.run()是不是CCApplication的虚拟方法?如果是的话,AppDelegate 是否实现了他?如果不是,那run是在做什么事情?

2.是通过什么接口来调用我们的AppDelegate的?换句话说,就是,我们要实现那些方法,来进行初始化,和获得最终的执行权。以及他们的调用时机是什么?

对应第一个问题,是run不是虚拟函数,也就是说AppDelegate不存去实现这个方法,这个似乎跟其他系统的设计有点不同。cocos2d-x用run来进行平台初始化,也就是说在准备一个应用程序必须要的东西,其中最主要的是窗口和窗口过程函数,而cocos2d-x的渲染工作是opengl实现的,所有,这个过程就包括给我们建立一个opengl的环境。而第二个问题,就通过run函数来解决。接口有:initInstance ,applicationDidFinishLaunching,而我们进入到AppDelegate里面来,看到就跟这个差不多。这里出现了,一个很重要的类:CCDirector。这个类就是导演类,最后的主流程都交给他,但导演喊ka之前,我们得为他准备一些材料(包括场景).在cocos2d里面这个事情是在initInstance
()来做的,前面讲过这个函数是个virtual,在我们的AppDelegate会实现,我们反过来想以想,我们为导演准备什么,就是需要初始化哪些东西?至少我们得准备一个窗口,才可能去画图。cocos2d底层是用opengl来渲染的,所以,我们就可以想到,我们得初始一个窗口和opengl,准备好窗口给导演使用。而这个类就是CCEGLView,这个是在我们在cocos2d上开发,接触到的第二个类,我们可以把他理解成环境准备类,他就是把平台的窗口和opengl联系的纽带。就是我们开始说的材料准备负责人。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐