Quick-Cocos2d-x初学者游戏教程(五)

上一章我们创建了游戏的菜单场景,并讲解了一些基础元素的创建,接下来这章,我们会先让大家了解一些接下来游戏开发中需要用到的辅助工具,然后再教大家创建另一个游戏场景,并跳着到该场景中来。

工具介绍

在开始真真的写代码之前,其实早该讲讲以下这些辅助工具的。这些工具可以让我们更好更方便的实现程序中的某些功能,比如地图编辑工具、粒子编辑工具 等。尽管这些工具在我之前的教程中已经不厌其烦的讲了好多次了,但是为了做到真正的初学者教程,本小节还是先来简单的介绍下这些工具的使用方法,毕竟接下 来的章节中我们会陆续的用到这些工具。还是那句话,希望对初学者有所帮助。

TexturePacker

TexturePacker 是一款图片编辑打包工具,它能将我们游戏中用到的多个图片资源打包成一张大图,这样加载图片不仅能节省空间,而且还能提升速度。
TexturePacker 的下载可以到它的官方网站进行下载。

Texturepacker工具的使用很简单,它的每个设置项都给出了相应的提示信息,这里我们打包的步骤如下:

  1. 将资源图片(PS:如果图片资源本身就大,那不建议使用 TexturePacker 进行打包,因为打包出来的资源很有可能会超出硬件设备对纹理最大尺寸的限制。)拖动到 TexturePacker 右侧窗口中。
  2. 设置导出资源的格式、位置,这里会导出两种文件,其中一个是储存图片信息属性的列表文件,该文件只能是 .plist 格式;另一个文件是打包后的图片文件,它可以是 .png,.jpg,.pvr.ccz 等等格式,但这里建议打包为pvr.ccz格式,因为使用这种图片格式的好处有两点:1、可以使你的应用程序更小,因为图片是被压缩过了的。2、你的游戏 能够启动地更快。
  3. 点击 Publish 按钮导出资源。

在 Quick 中要想使用这种被打包的资源,那么我们首先需要把它载入精灵帧缓存。以下函数能实现这一目的:

1
display.addSpriteFrames(数据文件名, 材质文件名)
  • 材质文件名:由多张图片组成;
  • 数据文件(plist 文件):记录了图片在材质文件中的位置等信息。
    如下是用Xcode打开的 plist 文件的结构,我想这样可以让各位更加直观的感受下打包这个概念。

精灵帧缓存 SpriteFrameCache 是用来存储精灵帧 SpriteFrame 的,SpriteFrame 精灵帧对象可以用来追踪所有精灵帧缓存中精灵的信息。缓存精灵帧有助于提高程序的效率。其中 SpriteFrameCache 是一个单例模式,它不属于某个精灵,是所有精灵共享使用的。

addSpriteFrames 方法将从传人的 plist 列表文件的元数据部分获取各个纹理的纹理名,并将它载入到纹理缓存中,然后解析它属性列表里的文件。

当我们要使用精灵帧来创建一个精灵时,我们可以像前面创建普通精灵一样使用newSprite方法。但为了和直接用文件中的图片创建精灵区分开 来,Quick 中规定:如果图片名以“#”字符开头,那么该图片将从SpriteFrameCache中读取,如果没有“#”开头,才表示直接从文件中读取。

关于打包文件的实际应用,我们后面会给出例子。这里你可以先把资源载入精灵帧缓存,如下在 MyApp:run() 方法中添加以下代码:

`

1
display.addSpriteFrames("image/player.plist", "image/player.pvr.ccz")

`

TiledMap编辑器

TiledMap 编辑器是一款地图编辑工具,我们可以利用它把单个单个的图块(或称之为瓦片)拼接成一幅完整的地图,我们也称之为瓦片地图编辑器。

TiledMap 编辑器制作的地图为 TMX 格式的文件,该文件可以被 Cocos2d-x(Quick)很好的支持。其官方下载地址为:http://www.mapeditor.org/。

本游戏中,我们将用TiledMap编辑器编辑本游戏的部分地图,具体的方法我们在用到时在详细讲解。

粒子编辑器

本游戏中,后面我们会用粒子效果来渲染游戏场景,使游戏更加炫丽,所以下面我要说说这个粒子编辑器是个咋回事!

因为游戏中往往需要有到一些特殊的粒子效果(如烟花、爆炸、下雪等等),所以粒子系统这样的程序模块便在各类游戏引擎中孕育而生,Cocos2d- x(Quick)也不例外,它为我们提供了强大的粒子系统。只不过Cocos2d-x(Quick)中的粒子系统有非常多的属性需要设置和调节,使用起来 还是有些复杂。

所以为了能偷懒,程序员们开发了粒子编辑器,它可以很方便的编辑出漂亮的粒子效果,让你勉去手动设置粒子属性的过程。

常用的粒子编辑器也有两种,一种是ParticleDesigner,另一种是ParticleEditor(之前我也写过一篇关于如何使用ParticleEditor编辑器相关的文章,可供大家可以参考)。

教程中我们所用的粒子编辑器是ParticleDesigner,下面是我用该编辑器调出的一个粒子效果。

注意:如果想要调出满意的粒子效果,那么需要了解整个粒子系统的组成原理,所以想自己试试的童鞋可以参考《粒子效果》一文.

以上我们就粗劣的介绍完了开发中将用到的辅助工具,接下来我们来看看如何创建新的游戏场景。

新建游戏场景

在 Sublime 编辑器中新建一个 lua 文件是非常容易的,只需要在菜单栏中选择 File-》New File 就可以新建一个文档,然后再把这个文档以 .lua 的形式保存在 src ▸ app ▸ scenes 目录下就可以了。此处我们新建一个 lua 文件,取名为 GameScene。

这个 GameScene 场景将是本游戏的逻辑场景,飞行游戏的所有逻辑部分的代码都将在本场景中实现。所以下面我们就来开始构建这样的一个游戏场景吧。

首先,根据 MainScene.lua 文件的构成形式,我们依葫芦画瓢在 GameScene.lua 文件中加入如下的一段代码,该段代码将为我们创建一个空白的游戏场景。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
local GameScene = class("GameScene", function()
    return display.newScene("GameScene")
end)
function GameScene:ctor()
end
function GameScene:onEnter()
end
function GameScene:onExit()
end
return GameScene

添加好以上代码后,一个简单且背景黢黑的 GameScene 场景就算创建好了。

关于 GameScene 的代码我们暂时就这样子,在下章分析完 GameScene 的构成后我们再着手编写。下面我们先来跳转到 GameScene 场景看看跳转效果。

跳转场景

我们知道,游戏运行的第一个游戏场景是 MainScene 场景,所以,现在请打开 MainScene.lua 文件,让我们来添加代码使它能跳转到 GameScene 场景,添加的位置是在点击开始按钮时触发的 onButtonClicked 函数中。代码如下所示:

1
2
3
4
cc.ui.UIPushButton.new({ normal = "image/start1.png", pressed = "image/start2.png" })
    :onButtonClicked(function()
        app:enterScene("GameScene", nil, "SLIDEINT", 1.0)
    end)

enterScene 方法我们曾在讲解 MyApp.lua 文件时提到过,当时只是使用该方法简单的进入场景而已,而此处我们则添加了特别的切换效果。并没有深入的解析,下面我们就来看看enterScene方法的定义,如下所示:

1
enterScene(sceneName, args, transitionType, time, more)

它的参数分别是:

  • sceneName:表示跳转场景的场景名,也就是我们将要进入的场景的场景名。
  • args:表示跳转场景传给该场景类构造函数的参数,args需要是一个table。
  • transitionType:表示场景切换的过渡动画类型,lua中定义的过渡动画类型差不多有30种.
  • time:表示从当前场景跳转到 sceneName 场景的过渡时间。
  • more:表示过渡效果附加参数。

所以,app:enterScene("GameScene", nil, "SLIDEINT", 1.0)表示从当前场景切换到 GameScene 场景,切换的过渡动画是 SLIDEINT 类型(新场景 GameScene 从顶部进入,同时现有场景 MainScene 从底部退出),整个切换过程用时1秒。

transitionType可以是如下的一些类型:

  • crossFade:淡出当前场景的同时淡入下一个场景
  • fade:淡出当前场景到指定颜色,默认颜色为 ccc3(0, 0, 0),可用 wrapSceneWithTransition() 的最后一个参数指定颜色
  • fadeBL:从左下角开始淡出场景
  • fadeDown:从底部开始淡出场景
  • fadeTR:从右上角开始淡出场景
  • fadeUp:从顶部开始淡出场景
  • flipAngular:当前场景倾斜后翻转成下一个场景,默认从左边开始翻转,可以指定为:
    • cc.TRANSITION_ORIENTATION_LEFT_OVER 从左边开始
    • cc.TRANSITION_ORIENTATION_RIGHT_OVER 从右边开始
    • cc.TRANSITION_ORIENTATION_UP_OVER 从顶部开始
    • cc.TRANSITION_ORIENTATION_DOWN_OVER 从底部开始
  • flipX:水平翻转,默认从左往右翻转,可用的附加参数同上
  • flipY:垂直翻转,默认从上往下翻转,可用的附加参数同上
  • zoomFlipAngular:倾斜翻转的同时放大,可用的附加参数同上
  • zoomFlipX:水平翻转的同时放大,可用的附加参数同上
  • zoomFlipY:垂直翻转的同时放大,可用的附加参数同上
  • jumpZoom:跳跃放大切换场景
  • moveInB:新场景从底部进入,现有场景同时从顶部退出
  • moveInL:新场景从左侧进入,现有场景同时从右侧退出
  • moveInR:新场景从右侧进入,现有场景同时从左侧退出
  • moveInT:新场景从顶部进入,现有场景同时从底部退出
  • pageTurn:翻页效果,如果指定附加参数为 true,则表示从左侧往右翻页
  • rotoZoom:旋转放大切换场景
  • shrinkGrow:收缩交叉切换场景
  • slideInB:新场景从底部进入,直接覆盖现有场景
  • slideInL:新场景从左侧进入,直接覆盖现有场景
  • slideInR:新场景从右侧进入,直接覆盖现有场景
  • slideInT:新场景从顶部进入,直接覆盖现有场景
  • splitCols:分成多列切换入新场景
  • splitRows:分成多行切换入新场景,类似百叶窗
  • turnOffTiles:当前场景分成多个块,逐渐替换为新场景

此时刷新 player,我们就会看到跳转场景的效果。

转载于:https://www.cnblogs.com/dudu580231/p/4796697.html

Quick-Cocos2d-x初学者游戏教程(五) --------------------- 辅助工具和跳转场景相关推荐

  1. Quick-Cocos2d-x初学者游戏教程(二) -------------------- Quick内部的代码结构及相应的原理...

    Quick-Cocos2d-x初学者游戏教程(二) 上一章我们已经了解了Quick的一些基础知识,所以本章我们将开始深入到Quick内部,了解它内部的代码结构,同时在解析的过程中学到相应的原理,并学会 ...

  2. 翻出来的老物件,11年学习易语言之后写的一个游戏策划脚本辅助工具

    翻出来的老物件,11年学习易语言之后写的一个游戏策划脚本辅助工具,某年因为某恶心的项目回乡之后,学了下E语言,学完之后手有点痒痒,于是乎自己想写点东西,因为本身做了很长时间游戏,所以想做个游戏相关的, ...

  3. Quick-Cocos2d-x初学者游戏教程1

    前言 虽然之前已经写过了好些 Cocos2d-x 相关的教程和文档,但本次却是我第一次接触 Quick,第一次接触 Lua,所以此次的教程本人将站在一个初学者的角度(看到这里是不是想白眼我了,哈哈,别 ...

  4. Quick-Cocos2d-x初学者游戏教程2

    http://blog.csdn.net/qq_30392565/article/details/53222447 转载于:https://www.cnblogs.com/xiyushimei/p/8 ...

  5. 使用python玩跳一跳超详细使用教程/脚本辅助工具

    本文首发于http://www.52aite.cn博客,没有知乎,没有微信公众号,只是蹭一波python跳一跳的热度. python辅助作者github账号为:wangshub. 作者的知乎专栏为:h ...

  6. QQ找茬辅助工具 C#

    昨天晚上用C#做了一个QQ游戏"找茬"辅助工具.这个不能算是一个外挂工具,因为不涉及到服务器和客户端的问题,只涉及到图像处理的知识.目前只是实现了基本的功能,但是已经够用了,玩了几 ...

  7. 【Visual C++】游戏开发五十七 浅墨DirectX教程二十四 打造游戏GUI界面(二)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/16922703 作者:毛星 ...

  8. 翻译:如何用Cocos2d来开发简单的IPhone游戏教程

    这一周接触到Cocos2D开发,在它的官网上看到Ray Wenderlic写的关于cocos2d开发的文章,感觉写的挺好,翻译了一下.  原文链接地址大家可以在上面看到作者的更多内容 初次翻译文章,望 ...

  9. 译)如何使用cocos2d制作基于tile地图的游戏教程:第一部分

    (译)如何使用cocos2d制作基于tile地图的游戏教程:第一部分 免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明. ...

  10. 如何使用cocos2d-x 3.0来做一个简单的iphone游戏教程(第一部分)

    游戏截图: cocos2d-x 是一个支持多平台的开源框架,用于构建游戏.应用程序和其他图形界面交互应用.Cocos2d-x项目可以很容易地建立和运行在iOS,Android的三星Bada,黑莓Bla ...

最新文章

  1. 图像自标记的可视化指南
  2. 杨辉再发声明:没有及时交流工作进展,深表歉意
  3. struts2 从 action 到 jsp 页面
  4. Acwing第 37 场周赛【完结】
  5. oracle 给表空间改名,Oracle重命名表空间和删除表空间
  6. 几种常见的长度单位整理
  7. jupyter notebook如何打开其他文件夹下的iqynb文件
  8. linux man 手册翻译,close (linux man) 翻译
  9. (MoMoCMS教程10)创建留言板
  10. shiro web环境初始化过程
  11. 你能想到几种方式实现数组扁平化(越多越好)
  12. Domino 邮箱服务器接收不存在的邮箱账号的邮件
  13. excel处理html文件,html网页显示excel表格数据-html读取本地excel文件并展示
  14. oracle sql列转行_oracle SQL 行、列转换
  15. 微信公众号插入公式介绍
  16. icom对讲机写频线定义_ICOM对讲机的常见故障和使用中的问题
  17. android 图片编辑工具,图片编辑工具手机版下载
  18. malloc()动态分配内存
  19. 联想小新潮7000黑苹果教程_联想小新 潮7000-13怎么装win10系统|联想小新 潮7000-13用u盘重装win10系统教程-系统城...
  20. 南大科院大数据Hadoop工程实训

热门文章

  1. heavy dark--读《《暗时间》》
  2. 【Android】 修复ijkPlayer进行m3u8 hls流播放时seek进度条拖动不准确的问题
  3. 制造业悖论 -- 一些难解而又必须解的问题
  4. 理顺8个版本vue的区别
  5. SD-WAN+物联网:让城市更智慧
  6. ubuntu下iptables的用法
  7. box-shadow(text-shadow)参数详解
  8. 【翻译】Siesta事件记录器入门
  9. mysql修改表、字段、库的字符集
  10. 网络口碑Market,生来“苟且”?