前言:
上一篇文章说了cocos2d-x 和 cocosStudio 在win10的搭建
本篇来说一下 工程创建以及怎么运行起来的以及运行的生命周期
创建工程
要创建一个开发者账号
打开以后主界面是这样的
然后选择菜单栏的 文件 新建项目
这就创建好了
咱们先预览一下
工程介绍
找到本地的工程项目文件夹看一下都有什么
classes 下面就是咱们的c++文件 咱们先不看
cocosstudio 是cocosstudio 的文件 有背景的图片和 场景的文件
打开MainScene.csd 看了一下 就是个配置文件
记录了 一些参数 就是这个东西
下面的 android 和 mac 咱们不看 那是其它平台的
这个 proj.win32 也就是咱们 的vs项目 一会仔细说
Resources 资源文件 一些贴图啊 音频啊 乱七八糟的都放到这里
如果我们改了界面 要更新本地的c++ 代码
发布为 vs 工程 就ok了 再次打开的vs工程 就是有新的改动了
不用担心 我们之前的vs里写的代码不会给你变 我都踩过坑了
下面我们开始看代码
这才是最重要的 因为我的cocosStudio 也不太会用
代码
这个cocosStudio 生成的项目 windows SDK 和我电脑的不匹配 改一下就行
看一下代码文件
AppDelegate.h
AppDelegate.cpp
HelloWorldScene.h
HelloWorldScene.cpp
main.h
main.cpp
函数入口 程序的启动
先从main 函数开始看吧
创建一个 应用程序实例
对象 是 AppDelegate 进去看一下
继承了cocos2d 的applicaion
一个默认构造析构 都是空的不看了
虚函数 virtual void initGLContextAttrs();
我们上节说过了 cocos2d-x的底层是c++和openglES 实现的
这个函数是 设置一下opengl 的r g b a 深度 模板等属性
不用管
下面的三个函数也就是我们说的程序的生命周期
生命周期
比如 你正在打手机游戏 那么突然来电话了 你的游戏会进入后台
当你打完电话在把游戏切过来 发现已经打死了
咱们把这3个函数打一下log 看一下什么时间触发
加上头文件
#include “cocos2d.h”
#include “ui/CocosGUI.h”
#include “cocostudio/CocoStudio.h”
cocos 有提供的log宏 大小写别打错了 打错了会保错 是宏定义
给每个函数都打上log 咱们看输出
我录制了个gif 可以清晰的看到
applicationDidFinishLaunching
是程序一打开以后会进入的
applicationDidEnterBackground
我们最小化放到后台时的会调用
applicationWillEnterForeground
从最小化切换回来会调用的
ok 咱们细细看一下这几个函数
applicationDidFinishLaunching
最上面是初始化了一个 导演类
然后获取这个导演类的opengl 的视图
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
如果没有 那么就创建一个视图 960*640 的标题为 csdnHelloWord 的窗口 大家可以改动
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::createWithRect("csdnHelloWord", Rect(0, 0, 960, 640));
director->setOpenGLView(glview);
}
下面设置了分辨率的大小 和显示模式
director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);
要不要显示左下角的 FPS
设置FPS的帧率 也就是一秒多少张图片 默认是1秒60帧 人眼看这个帧率是最舒服的
// turn on display FPS
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);
GL verts: opengl 顶点个数
GL calls:绘制分为几部分
59.5/0.001: 当前帧率以及一帧要耗时几秒
然后下面是设置一下 资源文件的路径
又创建了一个场景 给到导演运行
这个场景 也就是我们HelloWorld 的场景
咱们等会看
下面的两个函数 比较简单了 暂停和开始
当切换到后台就暂停
回来就继续
AppDelegate 这个类 和 main 函数咱们也就逐行看完了 比较清晰了
下面看一下咱们的HelloWorldScene类
HelloWorldScene
HelloWorld 是继承 layer (层)
layer 和 scene 都是个抽象的概念
scene 就好比一个容器 里面包含了好多层 layer 比如有图片层 文字层
最后把这些层叠加起来 用场景显示出来
这个scene 就像一个栈 先添加的层会在下面
后添加的会盖住它 但是可以设置它的Z 也就是深度 在scene 层级中的位置
这个create 怎么来的?
进去看一下
原来在这里 create
这个宏的功能 创建一个当前类的对象 也就是我们的HelloWorld
然后初始化 并且加入到 cocos的内存的释放池中 cocos 自己实现管理内存的机制
如果没初始化成功就返回null了
看一下这个
看一下它的定义 有好多重载
咱们看两个
这就是往场景这个容器中放东西 看第二个有个 localZorder 就是指定它的深度
tag 就是个标签 设置了标签 可以在 scene 中 根据标签找到 这个节点
layer 层就是个节点
根据这个csb文件创建了一个节点
添加进去 结束
csb 文件就是游戏文件 里面是二进制的我们看不到
它是在cocosStudio 中搞的
就在我们Resources 文件夹下
所以我们能看到 运行时的 cocos2d-x的logo
如果去掉 addChild 那么也就看不到了
结尾
我觉的看到这里应该是对 cocos2d-x的运行机制有个初步的理解了
后面我会写一些精灵,动作,场景切换等
我还是一个新手刚学 有不对的地方请大佬指正
另外如果本文对您有帮助给我点个赞或者关注,毕竟啰嗦了这么长时间手都酸了
谢谢大家