上一章完成了最小化的可运行程序,这一节讲解一下代码:

一、了解cocos基本概念:

导演、场景、层、精灵、动作等这些是cocos最基本的东西,从数据结构的角度来看,这几个类的关系可以概况为:以导演类为根节点的一颗树(场景、层、精灵、动作都是继承自节点类的)
这一点可以看官方的介绍,图文讲解更详细

https://docs.cocos.com/cocos2d-x/manual/zh/basic_concepts/

简而言之,这就是个俄罗斯套娃,我们要注意的主要是套娃的顺序,俄罗斯套娃是大的套娃套小的套娃,不能小的套娃套大的(cocos是可以的,因为节点是同级的,但是一般来说没有深入了解之前我们按默认顺序来)

套娃顺序:

一个导演(N个场景(N个层(N个精灵(N个动作))))

接下来是每个概念的朴素理解:

1.导演:程序窗口,负责管理全局,控制程序的启动、暂停、关闭(导演嘛,可以决定这场戏开始、暂停、结束)
导演在我们身边,导演竟是我们自己。[笑~]

2.场景:在游戏中我们从一个地图到另外一个地图,每个地图都不同的风景、npc、事件等等,每一个地图可以称为一个场景。
每一个场景就是电影中的一个小段落,我们会在场景中看到各种各样的风土人情以及经历各种光怪陆离的故事。

3.层:在每个场景中,也就是每一个游戏地图中,我们可以做不同的事情,遇到不同的npc,其中怎么布置每一个npc、每一个风景、每一个事件都可以在层中进行。
场景决定了我们这一场戏中,那些东西可以打碎、哪些东西不能打碎、哪些是摆设、哪些东西放在哪里(。在一个地图,假如存在几棵树,可以用不同的层决定哪些树可以攻击,哪些树就是个装饰)。

4.精灵:精灵就是地图中的玩家、npc、怪物、宝箱、可拾取的道具等可以交互的对象。
精灵就是陪我们演出这一场戏的演员,精灵决定了我们看到的演员够不够帅气、BOSS够不够邪恶威猛、屠龙宝刀是不是亮瞎眼。

5.动作:动作是提前给精灵(演员)做好的一系列动作和反应,比如被打了做什么动作、攻击做什么动作等。
动作决定了我们这一场戏演的是不是精彩、特效够不够绚丽、招式是否花里胡哨。

6.控件:控件如果做过GUI程序的话很好理解,我们可以将其归类到精灵,其主要就是做游戏中的界面,例如:背包栏、账号密码输入框、各种界面按钮都是控件。

二、新晋导演

导演的自我修养第一条:
专业的事情交给专业的人。

现在我们作为一个新人导演,我们要开始布置我们的第一场戏了,首先我们要做的是布置一个场景,但是作为一个导演,我们不可能亲自去管理每一个场景,以及怎么布置场景。因此,我们肯定要找一个人来负责布置和管理场景,于是我们恪守导演自我修养的第一条:专业的事情交给专业的人。
好了,我们现在去找找谁来负责这个工作,就决定是你了,去吧!布景师(ShootBubbleSceneManager)。
现在你告诉了布景师(ShootBubbleSceneManager)场景是下面这样的:
这个场景就是主场景(mainScene),我们的戏,就是从这里开始的。

于是,布景师(ShootBubbleSceneManager)脑海里有了自己要做一个主场景(mainScene)的任务,然后迅速做好了方案(Scene* createScene())。

#ifndef __ShootBubbleSceneManager_H__
#define __ShootBubbleSceneManager_H__#include "cocos2d.h"
using namespace cocos2d;class ShootBubbleSceneManager
{public://    声明指向不同场景对象的指针Scene* mainScene;//创建第一次进入游戏的场景Scene* createScene();
};#endif
#include "ShootBubbleSceneManager.h"
#include "StartLayer.h"
using namespace cocos2d;//创建第一进入游戏场景
Scene* ShootBubbleSceneManager::createScene()
{//创建一个场景对象mainScene = Scene::create();//创建一个布景对象auto mlayer = StartLayer::create();mlayer->sbsm=this;//将布景添加到场景中mainScene->addChild(mlayer);//返回主场景return mainScene;
}

方案交给了导演,但是导演不太理解下面这些是什么:

  //创建一个布景对象auto mlayer = StartLayer::create();mlayer->sbsm=this;//将布景添加到场景中mainScene->addChild(mlayer);

于是,你问布景师(ShootBubbleSceneManager),mlayer是谁?

布景师(ShootBubbleSceneManager)用关爱智障的眼神看着导演,告诉他这是我们组的道具师团队(StartLayer)的小名,他们负责道具的制作与摆放。

导演挠了挠头,知道了mlayer是负责主场景的道具师(StartLayer),并乘机提出:现在我们去看看道具师(StartLayer)是怎么布置的吧。用来掩饰自己的尴尬。

1.博客中标注原创的文章,版权归原作者 酒与花生米 所有;

2.未经原作者允许不得转载本文内容,否则将视为侵权;

3.转载或者引用本文内容请注明来源及原作者;

4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

cocos2dx 4.0入门之泡泡龙项目的分解(二)相关推荐

  1. cocos2dx 4.0入门之泡泡龙项目的分解(一)

    项目源码地址: 源码 下一章: cocos2dx 4.0入门之泡泡龙项目的分解(二) 前言 本文只是作为一个业余爱好者的见解,不会涉及太深入的讲解(太深入我也不会-(笑)),目的在于带领想学习coco ...

  2. Cocos2d-x 3.0 rc0中加入附加项目,解决无法打开包括文件:“extensions/ExtensionMacros.h”...

    Cocos2d-x 3.0 Alpha 1开始 对目录结构进行了整合.结果有些附加项目也被在项目中被精简出去. 比如说如果你需要使用CocoStdio导出的JSON.或使用Extensions扩展库, ...

  3. (上)小程序从0快速入门到实战项目打造个性简历,让你轻松脱颖而出吸引面试官眼球(附源码)

    前言 分享之前我们先来认识一下小程序,官方定义的微信小程序是一种新的开放能力,开发者可以快速地开发一个小程序.更是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体 ...

  4. 解决cocos2d-X 2.0版本后创建的Android项目提示org.cocos2dx.lib.Cocos2dxActivity找不到问题...

    原地址: http://blog.163.com/zhoulong19880518@126/blog/static/6070970220132511558143/ 解决方法:     复制 ***\c ...

  5. air调用java,AIR2.0入门教程:与Java应用交互

    在之前的一篇文章中,我介绍了如何使用AIR2.0新增的NativeProcess类与本地进程进行交互和通讯,在那个例子里面我们使用了C++ 的代码,实际上只要是基于命令行的标准输入输出,AIR2.0的 ...

  6. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--button控制主角Jumpamp;Crouch

    说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  7. 1、Cocos2dx 3.0游戏开发三找一小块前言

    尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 前言 Cocos2d-x 是一个通用 ...

  8. WF4.0入门系列1——创建一个简单的工作流

    WF4.0入门系列1--创建一个简单的工作流 打开VS2010,选择文件-新建-项目,选择Workflow项 工作流台应用程序,在名称处输入chapter01,选择合适的位置,这里默认,单击确定. V ...

  9. 实习小白::(转) Cocos2d-x 3.0开发(十三)使用CocoStudio编辑帧事件并关联到程序...

    1.概述 帧事件也是新加入的功能.这篇中我们将看到如何使用它.我们将上篇中制作的动画稍加修改.有图为证: 2.用途与原理 首先介绍一下帧事件.正如其名:一个与帧相关联的事件. 为什么要这么做呢?首先没 ...

最新文章

  1. linux下 SCP 、ssh、ssh-copy-id采用非默认端口传输
  2. 安装node-sass运行报错 Module build failed: TypeError: this.getResolve is not a function at Object.loader
  3. 事件驱动之JDK观察者模式
  4. python中迭代器的应用场景
  5. 用vector实现二维向量
  6. ajax传递复选框的参数,ajax将table复选框的数组值传递到后台
  7. 【php】面向过程的文件上传过程
  8. HTTP method POST is not supported by this URL解决方案
  9. java虚拟机 安卓系统下载_java虚拟机下载 v5.0 官方免费版
  10. Android计算器效果截图,Android复杂计算器实现
  11. 为你的Android应用构建窗口小部件(App Widget)
  12. 微信公众号推文怎么做?
  13. 指定的网络名不再可用
  14. Frefox安装AeroFox皮肤插件后菜单字体的美化
  15. Eat,PrayLove--结婚3周年
  16. 比ietest 更好的浏览器调试工具 Browser Sandbox 使用教程
  17. MATLAB如何修改默认设置
  18. php sesstion,操作Session的PHP类
  19. 清除redis的key与数据
  20. json对象(json对象和json数组)

热门文章

  1. Go语言WEB框架:路由注册
  2. 色彩管理软件如何有测色色差仪链接
  3. G20峰会在印度尼西亚举行,虹膜识别身份认证让佩戴面纱、口罩和留大胡子不再困扰
  4. java recordset 记录数_Recordset (ADO/WFC 语法)
  5. 各浏览器cloneNode方法的部分实现差异
  6. 北京市《智慧停车系统技术要求》正式发布(附下载)
  7. Boostrap视频教程-李炎恢-专题视频课程
  8. dw连接服务器文档类型,dw 连接到远程服务器
  9. LORA 通信距离测试
  10. perl语言中qq, qw等关键字的用法总结