原文地址:http://blog.sina.com.cn/s/blog_6084f58801013voy.html

欢迎加入开发群:285275050

. .

'.-:-.`

'  :  `

.-----:

.’       `.

,    /       (o) \

\`._/          ,__)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

欢迎加入开发群:285275050

本文翻译自:http://www.raywenderlich.com/23996/introduction-to-cocosbuilder

翻译:弹涂鱼

CocosBuilder与interface builder 类似,是cocos2d下简单快速进行精灵,层,场景布局的工具。

CocosBuilder可以快速完美的进行菜单和交互场景的布局,如果手动去做,这往往让人头疼。

在CocosBuilder之前,通过cocs2d为游戏创建基本的接口确实很痛苦。当添加一个新的菜单或按钮到你的游戏时,你通常这样来做:

l  做个猜测:“我认为这个按钮的大小是50*50”

l  编译运行:“看来有点不太正确”

l  猜测调整:“60*50或许更好”

l  整理重复:“还他妈的不对,啊!!!!!”

CocosBuilder 简化了所有这些步骤,包括重复迭代设置检测精灵位置,这样使你关注的焦点移动到时了游戏逻辑,而不是在界面设计上令你费尽周折,让你成为一个更加高效的码工。这当然是件好事,不是吗?

这个初级教程意在教会你使用CocosBuilder去创建简单界面,你将学会如何如何设置菜单,按钮,粒子系统,基础关卡布局,将界面与代码关联。

在这里我们将重新构建Cat Jump这个游戏 ,它最初由 Ray and Rod’s Cocos2D via Minigames工作室开发,当然,此次构建 我们将节约大量的代码。你将看到CocosBuilder是如何节约你的时间和代码的。

我们来以简单的方式来构建一些界面。

Cat Jump简介

Cat Jump描述了一只猫的倒霉一天。当它走在路上思考工作时,突然所有的汽车,卡车,甚至是骑在自行车上的小孩子都朝它驶来。

下图是游戏中的一张预览图:

可怜的小猫只有9条命,你的目标是使你的小猫通过躲避障碍物来来活的尽可能时间长。

为了对我们要做的游戏有一个大致的了解,从这里下载没有使用过CocosBuilder的CatJump版本(链接我不加了)。运行并玩一会,挺有趣的。

玩了一会游戏 ,看了一遍代码,你会注意到有许多硬编码的偏移用于设置菜单,文本条,和精灵的位置。这确实很痛苦,不过接下来你将学会一种简单的方式。

开始教程前,通过以下步骤来重新构建项目:

l  在CocosBuilder中重新构建主菜单场景。刚刚主菜单场景中的布局通过硬编码实现,现在你可删除那些代码,这些工作就交给CocosBuilder吧

l  添加选项场景。选项场景包含三个按钮用于设置难度:简单,中等,困难。点击每个按钮都会在代码中调用相应的触发事件。

l  添加关于场景。在关于场景添加一个小的粒子系统,通过CocosBuilder你不用编写一行代码。

l  通过CocosBuilder重新构建游戏场景。你将通过使用CocosBuilder来代替手工设置精灵位置。

l  通过CocosBuilder重新构建游戏结束场景。

最后,你将学习如何阻止或解决CocosBuilder中一些问题的技巧。使用CocosBuilder不易出错,不过我们仍然要避开一些障碍,有一点像骑三轮车的小孩子。你需要雷达去检测,以便节约我们的后续时间。

开始CocosBuilder

如果没准备好,那么先下载CocosBuilder,确保下载最新版本,写本文时使用的2.1版本,在下载界同时下载实例文件。

从归档文件解压,并把它拷贝到应用程序文件夹。

在开始使用CocosBuilder创建工程前为你的工程创建一个文件夹,在这里将存储游戏的资源文件(resources/assets)。

注意:你也可以创建一个资源文件夹的引用,这个文件夹可以在你硬盘的任意位置,但是我发现创建类似这样的文件夹结构可以让我知道所有我的文件所在同时保持合理组织 。

在桌面创建一个文件夹CocosBuilderFiles,在此目录里创建两个子目录Resources和Scenes。

Resource文件夹包含游戏中用到的所有资源文件。如果你喜欢你可以从CatJump中拷贝所有资源文件,当然为了简单我把用到的资源打成zip包(链接原文中找),下载,解压,拷贝到资源文件夹。

打开CocosBuilderFiles在菜单中选择File\New\New Project,命名工程为CatJump并保存到CocosBuilderFiles目录。

现在工程已经创建,你会在CocosBuilder左侧滑动条中看到Resources和Scenes文件夹。当然还有一个CocosBuilder自动创建的一个文件夹ccbResources,在它旁边你会看到一个新的文件HelloCocosBuilder.ccb,双击看到里面的内容。

它是只包含了一个Label的基础布局,显示着Hello CocosBuilder

不用担心,你的Cat Jump界面也只比这难一点。

无需代码!

我们以创建CatJump的主场景开始,这个场景有三个按钮:

l  开始按钮—开始游戏

l  选项—设置游戏难度

l  关于—介绍玩家如何进行游戏

首先,你需要删除HelloCocosBuilder.ccb文件,它只是程序默认创建的场景。

注意:你可能觉得通过CocosBuilder 工程去删除文件很直接,但我没能直接删除。我不得不采取关闭CocosBuilder,在Finder中删除HelloCocosBuilder.ccb。然后重新打开CocosBuilder。如果有人知道简单的方式,请在论坛中回帖。

接下来,选择File\New\New File,在下拉菜单中从菜单项中选择iPhone Landscape 和 iPhone 5 Landscape,另外确保根类型为CCLayer。

点击Create,命名文件为MainMenuScene,保存到Scenes文件夹。

此时工程面板看起来像这样:

这时你已经创建了你的第一个场景,那么我们来添加一些精灵吧。

点击工具条的CCSprite按钮。暗示:下图圆圈标出。

这将添加一个新的精灵到场景中。

选择新添加的精灵,使它的frame与Title_catjump.png绑定。在右侧的滑动条会显示出当前选中对象的属性。具体操作如下图:

通过拖拽使精灵剧中,或者在右侧滑动条中交Anchor Point的X,Y值设置为0。

注意到只有当位置设置为左下角时上述操作才会生效,当位置改变时,你不得不重新设置X,Y的位置。试试设置其他值的效果。

接下来我们为场景添加按钮。

点击下图中的CCControl按钮添加 一个按钮到屏幕中。

新按钮有一个漂亮的背景,这张背景图可以在ccbResources文件夹找到。通过右侧滑动条将标题改为Play.

调整按钮位置,可以通过拖动或右侧滑动条设置属性来调整位置。重复上述操作添加两个按钮,一个为Option,一个为About。最终效果如下图

第一个场景布局完成了。

连接场景到类!

开始工作前先来进行一些调整。当你通过CocosBuider 创建的CCLayer来设置场景时,如果你想使场景层为自定义类,你需要为CocosBuilder指明那个类。

例如,如果你用MainMenuScene初始化了一个场景并且你希望它的场景层是你自定义的类,你需要在CocosBuilder的代码连接区指明类名。

选中MainMenuScene.ccb,在TimeLine中CCLayer根节点。

在右侧代码连接区设置自定义类为MainMenuLayer,这样当你初始化场景时,CocosBuilder会寻找名叫MainMenuLayer的类去初始化场景层。接下来是要发布CocosBuilder界面文件,点南击File,选择Publish,这将在场景目录创建一个名字为MainMenuScene.ccbi的文件。

CocosBuilder介绍到这,接下来介绍如何在Cocos2D下工作。

编码时间!

首先确保你安装了最新的Cocos2D,写本文时是2.1版。

在Xcode里创建一个新的Cocos2D工程,并命名为CatJump,设置目标设备为Iphone:

创建工程并保存到硬盘。

接下来创建一个新的文件夹Scenes,将后缀为CCBI的文件拷贝到此文件夹,确保“Copy items to destination group’s folder (if needed)”为选中状态,另外 CatJump Target也为选中状态。

现在需要添加CCBReader文件夹到你的工程中,确保“Copy items to destination group’s folder (if needed)”为选中状态。对CCControlExtension执行相同操作。

在CatJump下创建新目录Layers,创建一个新的类MainMenuLayer使它继承自CCLayer。在开始写代码前在AppDelegate.m文件中添加头文件:

#import “CCBReader.h”

另外将application: didFinishLaunchingWithOptions:中的本行

[director runWithScene: [IntroLayer scene]];

替换为:

[director runWithScene: [CCBReader sceneWithNodeGraphFromFile:@"MainMenuScene.ccbi"]];

上面就是你要运行由CocosBuilder创建的场景所需要的所有代码,CCBReader会解析MainMenuScene.ccbi并创建场景。

在运行这个程序前还需要最后一步,还记在CocosBUilder中添加到时场景中的背景图和来自ccbReource文件夹下的按钮图片吗?

所有这些文件还没有添加 到你的工程中,你需要添加 这些文件到你的工程,否则程序会崩溃。

将下图中的文件拷贝到你的工程,记住勾选Copy items to destination group’s folder (if needed)。

现在编译工程,如果 在编译文件CCBReader.m时出现 错误,用下面这行代码替换错误行。

运行程序,如果一切OK,你会看到:

主要事件!

恭喜,你以经有了一个通过CocosBuilder布局的场景,并且加载场景只需一行代码。但是,当用户点击按钮时你如何去捕捉事件。

事实上,CocosBuilder简化了这个过程。它可以指定当用户点击按钮时要调用的方法名,你也可以指定调用方法时所需要的触发事件(功过 checkbox)。

我们来为MainMenuScene添加这个功能。打开MainMenuScene.ccb,选中Play按钮,在右侧面板的CCNode部分设置其Tag属性为1。接下来CCControl部分,在Selector对应的文本框中填写要被调用的方法名-- buttonPressed:。同时设置Target选项为 Document root。(又到了与层连接的时候了)

以同样的方式设置其他两个按钮,不同的是设置Options的Tag为2 ,About的Tag为3。

现在你已经为你的按钮绑定了事件,保存更改并发布,将发布的文件拷贝到Xcode。

接下来,打开MainMenuLayer.m ,添加以下头引用。

#import "CCControlButton.h"
#import "CCBReader.h"

同时在#import下添加以下宏定义

#define PLAY_BUTTON_TAG 1

#define OPTIONS_BUTTON_TAG 2

#define ABOUT_BUTTON_TAG 3

接下来在 MainMenuLayer.m 中添加 buttonPressed: 方法

编译运行,现在你的主菜单场景已经可能实现功能。

现在点击按钮程序会崩溃,因为其他场景还没有创建。下一步我们将去创建。

不选难的!

难度选择场景也有三个按钮,这里的三个按钮用于设置游戏难度,但是还要有一个返回按钮。创建一个场景命名为OptionsScene,保存到Scenes目录。

添加三个按钮分别为Easy,Medium和Hard,并设置其Tag分别为1,2,3。接着注册事件difficultyButtonPressed并设置目标为Document Root。

注意:什么是Document Root?它代表Time Line下的根节点。一会你会设置根节点为自定义类。这意味着OptionsLayer就是根节点。

布局如下:

现在添加 返回按钮。这次我们用CCMenu的菜单项来代替CCControlButton来创建返回按钮。

单击工具条的CCMenu按钮:

将创建的CCMenu节点添加到OptionsScene Layer,现在点击 CCMenuItemImage

按钮来添加   一个 CCMenuItemImage 按钮


就像你对MainMenuScene的操作,为OptionsScene添加自定义类。命名为

创建OptionsLayer,并在OpetionsLayer.m中

添加粒子—火焰!

点击工具条的CCParticleSystemQuad按钮

最终效果图如下:

同上,绑定自定义类。

最后介绍关于精灵的绑定,由于原文比较啰唆,这里我只给出绑定过程。

选中精灵:在右侧面板中找到


选中Doc root var,在文本框中输入对应精灵的变量名:



ok,关于CocosBuilder的使用就介绍到这。

翻译:弹涂鱼

PS :欢迎加入开发群: 285275050

CocosBuilder 完全攻略相关推荐

  1. CocosBuilder 完全攻略 (译)

    本文翻译自:http://www.raywenderlich.com/23996/introduction-to-cocosbuilder 翻译:弹涂鱼 CocosBuilder与interface ...

  2. VIM配置攻略(最强干货加强版)

    自己最近也在折腾这个VIM的配置,在网上也看了很多教程等,说真的看的一头雾水.主要是对于一个初学者来说对Vundle等根本没有什么了解,也不知道怎么用,并且由于本人的Linux系统是CentOs6.5 ...

  3. 基于DCMTK的DICOM相关程序编写攻略

    2008年09月10日 星期三 15:35 基于DCMTK的DICOM相关程序编写攻略 前言: 由于现在的医学影像设备的图像存储和传输正在逐渐向DICOM标准靠拢,在我们进行医学图像处理的过程中,经常 ...

  4. http状态404 vscode_VS Code 调试完全攻略(5):基于浏览器的 React 应用

    每日前端夜话第344篇 翻译:疯狂的技术宅 作者:Charles Szilagyi 来源:charlesagile 正文共:1750 字 预计阅读时间:7 分钟 这次我们来研究怎样把调试器连接到用 C ...

  5. Java - 框架之 SpringBoot 攻略day01

    Spring-Boot 攻略 day01 spring-boot 一. 基本配置加运行 1. 导入配置文件(pom.xml 文件中) <parent> <groupId>org ...

  6. AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)

    Aws Lambda是Amazon推出的"无服务架构"服务.我们只需要简单的上传代码,做些简单的配置,便可以使用.而且它是按运行时间收费,这对于低频访问的服务来说很划算.具体的介绍 ...

  7. AWS攻略——使用CodeBuild进行自动化构建和部署静态网页

    首先声明下,使用"CodeBuild"部署并不是"正统"的方案,因为AWS提供了"CodeDeploy".如果不希望引入太多基础设施,可以考 ...

  8. 小黑盒不显示服务器,steam上买的游戏小黑盒不显示 | 手游网游页游攻略大全

    发布时间:2018-04-18 贪吃蛇遇上打方块是一款最近非常热门的休闲小游戏,游戏将贪吃蛇和打方块合而为一吸引了很多玩家!但是好多小伙们都不知道该怎么玩,下面小编来教你一个快速入门的小技巧吧!~ 小 ...

  9. 一般熟练盲打需要多久_进口攻略!一般货物进口清关需要多久?如何有效提高清关效率?...

    ***请点击上方红色的"关注"我们,您的关注,是我们努力的动力!谢谢!*** 一.清关是什么意思? 在回答"清关一般要多久之前"我们一起来看下,就是清关是什么意 ...

  10. 64位游戏找call_《使命召唤16:战区》配置注册登录全攻略,三步让你极迅游戏!...

    如果说谁是2020年最火的游戏,那么<使命召唤16:战区>绝对是排名第一.自从<使命召唤16:战区>发布之后,同时在线人数就不断刷新纪录,一天300万,3天800万 ,到现在已 ...

最新文章

  1. 学习excel的使用技巧一空格替换为0
  2. fork练习、从进程角度考虑堆区内存申请与释放的有关问题
  3. 跟你们讲一个鬼故事,TA回来了!
  4. 2019-03-18-算法-进化(实现strStr())
  5. 剖析如何自己写框架Struts和Mybatis,学其原理而非重复造轮子
  6. Java中final、finally、finalize的理解
  7. 33. Avoid Hiding inerited names
  8. 采用SVM和神经网络的车牌识别(流程图及详细解释)
  9. 线程同步机制的区别与比较及进程通信方法
  10. 大专生三面蚂蚁金服,王道训练营java百度云盘
  11. pyhton爬取广州链家租房信息,并用tableau进行数据分析
  12. PHP合并在线电影ts格式视频文件
  13. HTML5七夕情人节表白网页(花瓣相册表白) HTML+CSS+JavaScript 求婚示爱代码 520情人节告白代码 程序员表白源码 3D旋转相册 js烟花代码 css爱心表白
  14. 最全最新cpu显卡天梯图_CPU天梯图2020年-2020年最新CPU天梯图(高清大图) - 系统家园...
  15. 【新手教程】51Sim-One Cloud 2.0如何接入被测算法
  16. 存储单元,存储字长,存储字,.存储容量
  17. 时间序列分析|LSTM多变量时间序列预测
  18. 【C语言】下标法 编写数组元素的输入与输出
  19. 通信基础篇小项目-----简单网络画板的的实现
  20. 基于jsp+java+ssm妇女联合会管理系统

热门文章

  1. 京东聚合收银(会员码支付)接口封装C++
  2. 【物联网项目系列】——使用netty框架做一个环保hj212协议即时通讯工具(接收解析处理实时数据)
  3. 酒店预订微信小程序怎么开发?
  4. db2 正则匹配_SQL正则表达式
  5. Java 操作Word书签(二):添加文本、图片、表格到书签内容
  6. MySQL表更新记录
  7. 猫盘群晖外部网络访问的三种方法:公网IP、内网穿透、qc的实际评测
  8. Realtek:电脑更新后,在主机前面板插上耳机没有声音,怎么解决?
  9. 医疗保险前台系统ER图1
  10. nginx源码编译安装及使用