Cocos2d-x项目结构分析

|   版权声明:本文为博主原创文章,未经博主允许不得转载。

1.下面是我们创建cocos2d的工程MyGame01里的文件资源

2. 在下面;文件解决方案下面有6个项目,我们的启动优先项为MyGame01;在MyGame01下有四个项resource,src,win32和外部依赖项;
1)、在src中的代理程序;应用程序的代理,包含游戏初始化游戏,创建场景,图层,精灵,进入后台,前台等等的一些方法
2)、在win32中的是main.cpp;为程序入口
3)、外部依赖项是MyGame01项目依赖的外部项目;也就是MyGame01上面5个项目都可以添加依赖,来使用它们


3.详细解读代码:
1)、首先我们找到程序入口,查看main.cpp代码

看到return  Application::getInstance()->run();程序这行代码;我们转到run()函数的定义,看run()函数如何执行的

首先我们看到的是:

一个初始化导演的代码,在是一个设置OpGLVIew视图的代码;有一个游戏无限循环的循环结构while(!glview->windowShouldClose())的循环体;!glview->windowShouldClose()表明:当程序运行的窗口没有关闭的时候将无限次循环循环体内的方法;
在循环体内有两个方法:
director ->mainLoop();                                                                           
导演类执行mainLoop()主循环
glview->pollEvents();
//这个是获取游戏在运行过程中的一些触发事件,如:点击鼠标,屏幕,摇动设备,重力感应,加速度感应等等
run()中还有一个方法:

release();是一个释放内存的函数
在进入main.cpp之后;程序有main.cpp中的AppDelegate app;这句代码;程序就会序会执行代理程序AppDelegate;在AppDelegate.h中我们可以看到三个重要方法;AppDelegata  是控制应用程序生命周期的

virtual bool applicationDidFinishLaunching();                //这个方法将会在应用程序完成了加载之后执行
比如:游戏图层的切换,应用程序启动完成之后,执行这个函数,来初始化界面的操作可以放在这个函数内
virtual void applicationDidEnterBackground();                //应用程序进入后台之后,这个方法将会被调用
比如:手机上按下home键,切换到手机主屏是,游戏调用此方法进入后台,电话来的时候,进入电话拨打界面,游戏自动暂停(包含了一些动画的停止,精灵等等游戏场景的停止),游戏进入到后台
virtual void applicationWillEnterForeground();                //将应用程序从后台调入前台时,这个方法将会被执行
比如:电话打完之后,再次进入游戏时,将调用此方法;将游戏从后台调入到前台运行
三个方法在AppDelegate.cpp中有具体实现的方法,还可以自己在具体化;如下:
1)、applicationWillEnterForeground();
2)、applicationDidEnterBackground();

3)、applicationDidFinishLaunching()

1)、首先获得OpenGLView视图
 auto director = Director::getInstance();
 auto glview = director->getOpenGLView();
2)、设置帧频率FPS,是否显示(FPS每秒多少帧),就是运行HelloWorld窗口左下角的那个变换的东西
如果将ture改为false,左下角将不会显示任何的东西了
// turn on display FPS
director->setDisplayStats(true);

director->setDisplayStats(false);

3)、设置帧之间的刷新的间隔
// set FPS. the default value is 1.0/60 if you don‘t call this
    director->setAnimationInterval(1.0 / 60);  
如果帧率设置的是1/60,就是1/60秒调用一次mainLoop,mainLoop里面有drawScene
4)、创建和运行场景
// create a scene. it‘s an autorelease object
auto scene = HelloWorld::createScene();
// run
director->runWithScene(scene);
当程序运行到auto scene = HelloWorld::createScene();时;接下来程序将会运行到HelloWorldScene.h这个代理程序;
打开HelloWorldScene.h我们可以知道,其实场景就是创建了一个图层并运行图层;他继承自Layer class HelloWorld : public cocos2d::Layer;HelloWorldScene这个是创建的一个图层,它public继承自图层Layer类

在下图中的createScence方法中;它依次执行;创建场景创建图层


当创建图层时,我们看到auto layer = HelloWorld::create();我们转到create()的定义处,下图;


发现图层是通过CREATE_FUNC(HelloWorld);来创建的;采用了一个宏CREATE_FUNC(HelloWorld);这个其实就是类方法create的实现。查看CREATE_FUNC的定义;


menuCloseCallback(cocos2d::Ref* pSender);一个回调方法,

在宏CREATE_FUNC的定义中有一个pRet->init();,在这条语句执行的时候,将会跳转到init()方法,来创建图层;

this是指当前指向自身的对象,因为HelloWorld继承自Layer类;因此此处的this指向的对象是Layer(图层)
this->addChild();在HelloWorldScene中表示添加什么到图层中去;

顺序为: 创建create--->位置设置setPosition--->添加addChild

项目的添加和引用;增添依赖关系
解决方案右键单击,添加---> 添加现有项;

然后会弹出一个窗口;
cocos2d  --->external--->任何一个文件夹(这里以Box2D为例)--->proj.win32---> 
选中.vcxproj的文件;在打开

添加好了之后,在添加项目依赖项;解决方案右键单击,添加---> 属性;

弹出一个属性设置窗口,如图操作:

------------------初学笔记,如有错误之处,希望大家多多指正

时间: 2024-10-11 17:21:26

Cocos2d-x项目结构分析的相关文章

quick-cocos2d-x学习笔记【2】——项目结构分析、创建新场景

创建完一个新项目之后,我们可以简单的看一看这个项目的文件组成,有这么一个文件层次结构 几个proj.*文件夹就不用说了,是对应的平台的解决方案,res专门存放我们的游戏资源,scripts存放我们的lua代码,sources中有我们熟悉的AppDelegate类,我们主要常用的就两个文件夹,res和scripts(我这不是废话吗) 好吧,还是再打开scripts文件夹看下, 该文件下有main.lua,它是程序lua脚本的启动文件 function __G__TRACKBACK__(errorM

VS2015 ASP.NET5 Web项目结构分析

前言 1.打开VS2015新建ASP.NET Web应用程序 2.选择ASP.NET 5 Starter Web 3.新建项目后可以发现项目结构如下 可以发现项目结构可以分为1到6六个部分.接下来我就来简单的描述一下我对这6个部分的理解. 1.global.json 1.global.json 文件存放在“Solution Items”解决方案目录下,打开 global.json文件发现,默认有这样的配置: 下面我们来验证一下这个sources的作用.先来做一件事情,下载Asp.Net MVC源

关于QT安装的一些心得(QT551, VS2013)项目开发配置,以及项目结构分析

推荐QT开发的配置如下: 我的硬件配饰中等,所以推荐一下配置: QT551版本,目前QT最新版8.0,为了稳定选择551版本 VS2013IDE, 因为VS2010与VS2013的编译器相同,但是VS2013版本提供的codding风格大变,有很多的便捷工具可以使用,不需要再安装visualAsisit. QTVS插件:可以同时支持vs2010,以及vs2013扩展 关于用QT551安装包的选择 如果使用默认的QTCreater,则最好选择官网上带编译器以及调试器的安装版本,否则后续配置国语复杂

Android应用开发项目结构分析

初学Android开发,初步理解的Android应用项目结构,备忘. 一.清单文件AndroidManifest.xml 功能: 1.供Android平台调用,供其了解本应用的信息,因此,所有的组件(Activity.Service.Broadcast等)都需要在 AndroidManifest.xml 中注册. 2.标注首页Activity. 二.代码文件 功能: 1.实现应用功能 三.布局文件 功能: 1.静态定义Activity中的View的布局 四.资源索引文件R.java 功能: 1.

Android基础之项目结构分析

创建了第一个Android项目,用工具开发Android项目,我们有必要熟悉项目的目录结构,清楚各个项目下面放置的是什么东西.展开整个项目,其根目录结构(选用不同版本的SDK文件目录结构会有一些不同,但大致一样)如下图所示: 1. src目录 该目录一个普通的保存java源文件的目录,其和普通java工程中的src目录是一样的. 2. gen目录 此目录用于存放所有由ADT插件自动生成的内容.里面最重要的是名称为R.java的文件,这个java文件含有很多静态类,并对应于下面要介绍的res目录下

quick-cocos2d-x游戏开发【2】——项目结构分析、创建新场景

创建完一个新项目之后,我们能够简单的看一看这个项目的文件组成,有这么一个文件层次结构 几个proj.*目录就不用说了,是相应的平台的解决方式,res专门存放我们的游戏资源.scripts存放我们的lua代码,sources中有我们熟悉的AppDelegate类.我们主要经常使用的就两个目录.res和scripts(我这不是废话吗) 好吧,还是再打开scripts目录看下. 该文件下有main.lua,它是程序lua脚本的启动文件 function __G__TRACKBACK__(errorMe

Android Studio(三)Android Studio项目结构分析

一.了解Android Studio的几种项目结构类型 Android Studio提供了几种项目结构类型 Project Package Android Project Files Problems Productions Test 二.Project External Libraries指项目所依赖的开发环境:java sdk 1.7和android sdk API 19 settings.gradle:里面的内容如下: include ':app', ':ChinaBuyeV3.1.0',

vue-cli项目结构分析

总体框架 一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关文件,了解一下即可. 文件结构细分 1.build--[webpack配置] build文件主要是webpack的配置,主要启动文件是dev-server.js,当我们输入npm run dev首先启动的就是dev-server.js,它会去检查node及npm版本,加载配置文件,启动服务. 2.config--[vue项目配置] config文件主要是项目相关配置,我们常用的就是

Express 项目结构分析

1.bin:启动配置文件,在 www 里修改运行端口号2.node_modules:存放所有的项目依赖库,就像java存放架包3.public:用于存放静态资源文件 图片,CSS,JAVASCRIPT文件..4.routers:路由文件相当于springmvc中的Controller,ssh中的action5.views:存放页面的地方6.package.json:项目依赖配置及开发者信息.7.app.js:应用核心配置文件,项目入口 app.js配置详解 // 1. 导入相关模块 var cr