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

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

2014-03-21 20:42 441 查看
学习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这个类是什么意思呢?

我将在下一个节再阐述一下我的观点 !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: