[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这个类是什么意思呢?
我将在下一个节再阐述一下我的观点 !
- [cocos2d-x菜鸟学习记录]解析示例helloWorld(上)
- [cocos2d-x菜鸟学习记录]解析示例helloWorld(下)
- cocos2d-x 菜鸟实习生学习篇(二)helloworld完全注释
- cocos2d-x 菜鸟实习生学习篇(二)helloworld完全注释
- Cocos2d-x 3.1 HelloWorld解析
- Cocos2d-x学习(一):HelloWorld
- Cocos2d-x学习笔记(1)- HelloWorld
- cocos2d-x学习笔记(一)--HelloWorld
- Cocos2d-x学习(一):HelloWorld
- Cocos2d-x学习笔记(一)HelloWorld
- Cocos2d-x学习笔记(二)------HelloWorld
- (4)Cocos2d-x的Helloworld项目工程架构解析
- cocos2d-x 菜鸟学习笔记十五(简单的碰撞检测 实践篇 上)
- cocos2d-x 学习记录
- 游戏开发学习-Cocos2d-x学习(一) HelloWorld 开始
- Cocos2d-x HelloWorld的全面解析
- cocos2d-x 菜鸟进阶篇(三) ScrollView(上)
- cocos2d-x初探学习笔记(1)--HelloWorld
- 判断是否为系统应用的几种方法[整理]
- 把windows字体都写在下拉控件里和查找文件加下的文件名.txt
- DB2查询锁及解锁
- android 为TextView添加边框
- 图像处理中的L1-normalize 和L2-normalize
- [cocos2d-x菜鸟学习记录]解析示例helloWorld(上)
- Jquery AJAX POST和GET区别
- MTK: android: TD、HSPA、GPRS的projectconfig.mk配置:
- maven配置jetty出现Cannot load implementation hint 'org.mortbay.jetty.nio.SelectChannelConnector'错误
- FlexViewer Module 图表控件 Error #1009
- Android中文文档
- jsp和servlet的区别?
- iOS7.1企业应用"无法安装应用程序 因为证书无效"的解决方案
- MTK driver 1