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

一、了解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. 两步改动CentOS主机名称
  2. linux重定向进程输出到文件删除,Linux文件编辑器vim输出输入重定向、管道以及进程(示例代码)...
  3. git clone 获取指定分支的指定commit版本
  4. CocoaPods打包静态库
  5. case class和trait
  6. php将逗号替换成空格,php写的将逗号、空格、回车分隔的字符串转换为数组的函数...
  7. DVWA系列之10 命令执行漏洞的挖掘与防御
  8. 我最看不惯的几个公众号
  9. 1.7 试探法(回溯法)
  10. python数据库连接池_Python数据库连接池 -组件 DBUtils
  11. WPS Office 简明教程
  12. 深度探索C++对象模型电子书pdf下载
  13. 小镇青年程序员的逆袭人生:从差点回老家到荔枝技术骨干
  14. 各省简称 拼音 缩写_中国省市县地区首字母缩写
  15. 论文阅读笔记《Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendation》
  16. Lucas定理与扩展Lucas
  17. gta5汽车oracle2数据,《gta5》车辆性能数据解析图文详解
  18. 甲;乙;丙;丁四个人过桥,分别需要1,2,5,因为天黑,必须借助手电筒过桥可是总共只有一个手电筒,并且桥的载重能力有限,只能承受两个人的重量也就是说每次最多过两个人,怎样才能做到用
  19. 记录 mac os 下一些好用的软件
  20. python matplotlib 绘制图片并保存图片

热门文章

  1. THOMAS MASON--英国顶级衬衫面料品牌
  2. Python scikit-learn,分类模型的评估,精确率和召回率,classification_report
  3. TinyXml快速入门(1)
  4. 记录批量将smiles转化为mol,并将分子图保存为png代码
  5. 【JavaWeb】HTML
  6. Kafka系列之:不重启kafka集群设置kafka topic数据保留时间
  7. 使用Navicat连接远程数据库
  8. c语言bcd码转换十六进制数,BCD码如何转换成十六进制数
  9. 当我敲代码时,女朋友无理取闹怎么办?
  10. 开源组态软件Qt,C#,和WEB大全(收藏版)