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

学习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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值