[cocos2d-x菜鸟学习记录]解析示例helloWorld(上)

来源:互联网 发布:php 流媒体 编辑:程序博客网 时间:2024/05/16 06:29

学习cocos2d-x已经有一个周了,进度貌似不是很快,毕竟第一次接触游戏引擎(这些都是借口),今天分享一下我在看helloworld的示例的一些心得吧,如果有哪里说得不对,希望大家能提出来。

在用python创建项目之后,我们在proj.win32文件夹中,打开整个项目,直接编译后,你会发现,会出现一个cocos2d-x的hello界面 。 这就是初始化的示例,也给我们提供了一个简单的运行框架。其实cocos2d-x给我们提供了很多的示例,大家在学习的时候可以看看官方给出的例子。废话就少说了。让我们来看看这个程序是怎么运行的吧。打开解决方案 可以看到里面有六个文件,分别是main.cpp main.h AppDelegate.cpp AppDelegate.h HelloWorldScene.cpp 和HelloWorldScene.h。

打开main函数 可以看到几行小的代码。

    AppDelegate app;    CCEGLView* eglView = CCEGLView::sharedOpenGLView();    eglView->setViewName("helloworld");    eglView->setFrameSize(480, 320);    return CCApplication::sharedApplication()->run();
可以看出主函数创建了一个app的AppDelegate类的对象。创建并现实了OpenGLView():的窗口,接下来设置了窗口的名字和大小。并运行这个程序。

CCAplication是一个创建窗口的一个类。当我们打开AppDelegate的类,可以发现AppDelegate是私有的继承了CCApplication这个类。

打开AppDelegate类可以发现里面有五个函数。

lass  AppDelegate : private cocos2d::CCApplication{public:    //构造函数    AppDelegate();    //析构函数    virtual ~AppDelegate();    //用于初始化窗口场景 导演    virtual bool applicationDidFinishLaunching();   //处理当程序中断的函数    virtual void applicationDidEnterBackground();    //处理当程序被中断后开启时响应的函数    virtual void applicationWillEnterForeground();};
对于后面两个函数 对于我的注释有一点难于理解,当我们正在用移动设备玩游戏的时候,突然中途来了个电话。我们的游戏运行被迫进入后台运行,于是这时候响应的函数是applicationDidEnterBackground(),当我们电话重新打完后,我们重新进入游戏,现在我们游戏响应的是applicationWillEnterForeground().

下面我们具体来看一下applicationDidFinishLaunching这个成员函数。

bool AppDelegate::applicationDidFinishLaunching() {    //c创建一个导演对象    CCDirector* pDirector = CCDirector::sharedDirector();    //创建一个openGL的视图对象CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();//导演对象设置openGL的视图    pDirector->setOpenGLView(pEGLView);    // turn on display FPS//开启限时FPS;    pDirector->setDisplayStats(true);    // set FPS. the default value is 1.0/60 if you don't call this    //设置FPS 60帧一秒。pDirector->setAnimationInterval(1.0 / 60);    // create a scene. it's an autorelease object    //创建一个场景类CCScene *pScene = HelloWorld::scene();    // run//导演对象让HelloWorld这个场景“跑”起来    pDirector->runWithScene(pScene);    return true;}

对于这段代码,像我一样的刚学习cocos2d-x并且没有学习过游戏引擎的菜鸟来说。CCDirector (导演类)和CCScene(场景类)一定会感觉很陌生。根据我看书后,我的理解为:每一个游戏就想一个场电影一样,电影都需要一个总指挥,那就是导演,只有导演才有能力调用各种人力物力。在这里,只有每个导演才能调用各种场景,各种资源。正如上面函数applicationDidFinishLaunching这个函数中pDirector->setOpenGLView(pEGLView);
pDirector->setDisplayStats(true);
pDirector->setAnimationInterval(1.0 / 60);
pDirector->runWithScene(pScene)
这几句代码的一样。只有导演才有能力设置视图,设置是否要显示FPS, 设置FPS的值,和加载一个场景。
上面的代码中有一句是创建一个场景对象
CCScene *pScene = HelloWorld::scene();
可以看出pScene对象被创建 调用的是HelloWorld这个类创建的。那么HelloWorld这个类是什么意思呢?
我将在下一个节再阐述一下我的观点 !

0 0
原创粉丝点击