描述
开 本: 32开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302473145丛书名: 清华开发者书库
本书适合Cocos2dx Lua游戏开发初学者,亦可作为经验丰富的Cocos2dx Lua游戏前端开发工程师的参考读物。
目录
第1章Cocos2dLua
1.1概述
1.1.1Cocos2d的起源
1.1.2Cocos2dx的诞生
1.1.3Cocos2dLua的发展
1.2版本介绍
1.2.1Cocos2dx版本介绍(C )
1.2.2Cocos2dLua版本介绍
第2章Lua编程
2.1Lua在Windows下的运行环境搭建
2.1.1安装
2.1.2运行
2.2Lua基础
2.2.1Lua介绍
2.2.2Lua语法
2.3Lua进阶
2.3.1Metatable(元表)
2.3.2重要元方法介绍
2.3.3封装
2.3.4继承
2.3.5多态
第3章Cocos2dLua基础
3.1Cocos2dLua开发环境配置
3.1.1安装Cocos2dLua
3.1.2安装Sublime与QuickXDev
3.1.3测试开发环境
3.2引擎架构与目录结构
3.2.1引擎架构
3.2.2引擎文件结构
3.2.3项目文件结构
3.3MVC框架
3.3.1什么是MVC
3.3.2Cocos2dLua中的类实现
3.3.3Cocos2dLua的MVC实现
3.4基础概念
3.4.1导演
3.4.2节点
3.4.3场景
3.4.4层
3.4.5精灵
3.5坐标系
3.5.1笛卡儿坐标系
3.5.2屏幕坐标系和Cocos2dLua坐标系
3.5.3世界坐标系VS本地坐标系
3.5.4锚点
3.5.5忽略锚点
3.5.6ZOrder与渲染顺序
3.6文本标签
3.6.1TTF文本标签
3.6.2BMFont文本标签
3.6.3UILabel控件
3.6.4Mac下使用GlyphDesigner制作字体
3.6.5Windows下使用BMFont制作字体
3.7按钮
3.7.1UIButton按钮
3.7.2UIPushButton按钮
3.7.3UICheckBoxButton按钮
3.7.4UICheckBoxButtonGroup按钮
3.8场景转换
3.8.1概念
3.8.2带转场特效的场景
3.8.3场景转换示例
3.9动作
3.9.1瞬时动作
3.9.2有限时间动作
3.9.3复合动作
3.9.4变速动作
3.9.5节点与动作相关的接口
3.10序列帧动画
3.10.1精灵表单
3.10.2播放序列帧动画
3.10.3动画缓存
3.11调度器
3.11.1全局调度器
3.11.2节点调度器
3.12事件分发机制
3.12.1节点事件
3.12.2帧事件
3.12.3键盘事件
3.12.4加速计事件
3.12.5触摸事件
3.13多分辨率适配
3.13.1Cocos2dx中的多分辨率适配
3.13.2Cocos2dLua中的多分辨率适配
第4章消除游戏实战(一)
4.1Fruit Fest(1): 主场景
4.1.1游戏玩法
4.1.2美术设计
4.1.3分辨率适配策略
4.1.4主场景
4.2Fruit Fest(2): 创建PlayScene
4.2.1准备BMFont
4.2.2创建PlayScene
4.2.3添加转场代码
4.2.4添加UI
4.3Fruit Fest(3): 初始化水果矩阵
4.3.1水果类
4.3.2矩阵算法
4.3.3掉落算法
4.3.4矩阵初始化的代码实现
4.4Fruit Fest(4): 选中水果
4.4.1绑定触摸事件
4.4.2清除已高亮区域
4.4.3高亮算法
4.4.4分数算法
4.5Fruit Fest(5): 消除与掉落
4.5.1消除高亮水果
4.5.2掉落与补全
第5章Cocos2dLua进阶
5.1UI控件
5.1.1输入控件
5.1.2进度条控件
5.1.3滑动条控件
5.1.4滚动视图控件
5.1.5列表视图控件
5.1.6分页视图控件
5.2瓦片地图
5.2.1用Tiled制作瓦片地图
5.2.2地图视角
5.2.3在Cocos2dLua中使用TMX
5.3精灵批处理
5.3.1手动批处理
5.3.2自动批处理
5.3.3手动批处理VS自动批处理
5.4碰撞检测
5.4.1点与点的碰撞
5.4.2点与矩形的碰撞
5.4.3圆与圆之间的碰撞
5.4.4轴对齐矩形之间的碰撞
5.4.5非轴对齐矩形之间的碰撞
5.5内存管理
5.5.1Lua内存管理
5.5.2Cocos2dLua内存管理
5.5.3纹理缓存
5.5.4精灵帧缓存
5.6数据与存储
5.6.1JSON数据
5.6.2crypto数据编码
5.6.3UserDefault数据存储
5.6.4GameState数据存储
5.6.5文件读写
5.7背景音乐与音效
5.8粒子系统
5.8.1什么是粒子系统
5.8.2Cocos2dLua中的粒子系统
5.8.3粒子系统批处理节点
5.8.4粒子属性
5.8.5粒子编辑器介绍
5.8.6使用粒子系统
5.9Spine骨骼动画
5.9.1Spine运行库
5.9.2用法示例
5.10裁剪节点
5.11渲染纹理
第6章消除游戏实战(二)
6.1Fruit Fest(6): 过关与信息存储
6.1.1添加进度条
6.1.2过关与数据持久化
6.2Fruit Fest(7): 爆炸特效与声音
6.2.1爆炸特效
6.2.2游戏音乐
6.2.3后记
第7章Cocos2dLua高级
7.1网络通信
7.1.1network
7.1.2SocketTCP
7.1.3WebSocket
7.2物理引擎
7.2.1创建带物理世界的场景
7.2.2创建物理边界
7.2.3创建受重力作用的精灵
7.2.4碰撞检测
7.2.5完整示例
7.3摄像机
7.3.1OpenGL视口
7.3.2cc.Camera
7.3.3场景的默认摄像机
7.3.4自定义摄像机
7.4自定义事件
7.4.1加载EventProtocol组件
7.4.2主要接口
7.4.3完整示例
7.5有限状态机
7.5.1基本用法
7.5.2完整示例
7.6扩展Lua接口
7.6.1Lua C API
7.6.2Lua栈
7.6.3Lua Binding实战(1): tolua 手动绑定
7.6.4Lua Binding实战(2): 扩展Spine接口
7.7OpenGL ES 2.0与shader编程
7.7.1OpenGL ES概述
7.7.2OpenGL ES绘制几何图形
7.7.3矩阵变换
7.7.4纹理贴图
7.7.5Cocos2dLua中使用自定义shader
第8章打包与发布
8.1Android项目的编译与打包
8.1.1安装JDK
8.1.2Build Native
8.1.3Android Studio打包
8.2Mac下编译iOS版本
8.2.1先决条件
8.2.2Debug真机调试
8.2.3Release打包
8.3发布时加密Lua源文件
8.3.1compile_scripts脚本
8.3.2去掉源代码引用
8.3.3修改Lua启动入口
8.4发布时加密图片资源文件
8.4.1encrypt_res脚本
8.4.2资源加密示例
8.5SDK接入
8.5.1使用luaj接入Android SDK
8.5.2使用luaoc接入iOS SDK
前言
注: 本书不适用于Cocos2dLua 2.x分支版本。
书中实例本书以理论结合实践,各章均配备了测试用例。其中第4章和第6章以Fruit Fest展示了完整游戏的开发流程,每一节各介绍一个独立的功能并配备实例代码,让初学者充分体验到游戏开发的细节。读者可以从本书的主页(http://cocos2dlua.org/book/index.md)免费获取所有章节配套的实例代码。读者对象本书作为Cocos2dLua的权威书籍,从Lua语言基础开始,全面覆盖Cocos2dLua基础、进阶和高级编程,并指导读者逐步完成一款消除游戏的开发。对于Cocos2d新手而言,本书可以作为手机游戏开发的入门书籍。对于有经验的手游开发者而言,本书依然是进行Cocos2dLua开发必不可少的参考手册,大量的实例代码可以帮助读者节省宝贵的时间。对于院校师生而言,本书的编排完全按照学习顺序系统展开,是教材的不二之选。由于笔者水平有限,书中内容难免会有不妥或者疏漏,欢迎读者批评指正。作者2017年5月
Cocos2dLua进阶
5.1UI控件在Cocos2dLua基础章节,我们已经接触了两个基础的UI控件: 文本标签和按钮。它们是编写游戏所需的基础的控件,提前介绍能帮助我们进行第4章的游戏实战。经过游戏实战的练习,相信读者已经对游戏开发有了直观的认识体验,但是可能依然无法完成某些界面布局,因此现在本书将介绍Cocos2dLua提供的其他控件。5.1.1输入控件游戏中,有时需要让玩家输入用户名、密码或聊天消息等,这时需要输入控件来完成这些功能。输入控件内部调用手机系统提供的输入法接口,获取系统输入控件返回值,再传递给游戏引擎中对应的界面。Cocos2dLua封装的输入控件类是UIInput,源码位于quick/framework/cc/ui/UIInput.lua。控件显示效果如图51所示。
图51UIInput
1. 创建输入控件通过cc.ui.UIInput.new(options)新建一个输入控件。其中参数options是table类型,可选值如下: (1) image:输入框的图像,可以是图像名或是display.newScale9Sprite()创建的Sprite9Scale对象。(2) imagePressed:输入状态时输入框显示的图像(可选)。(3) imageDisabled:禁止状态时输入框显示的图像(可选)。(4) listener:回调函数,监听输入事件(可选)。(5) size:输入框的尺寸,用cc.size(宽度,高度)创建。(6) x,y:坐标(可选)。我们来看看如何简单地创建一个输入控件,在MainScene的ctor中加入下面代码:
local editbox = cc.ui.UIInput.new({
image =”editbox.png”,– 输入控件的背景
x =200,
y =300,
size = cc.size(200,40)
})
self:addChild(editbox)
2. 获取文本可以使用getText()方法获取输入控件的文本内容。
local text = editbox:getText()
3. 设置提示信息可以设置输入字段预期值的提示信息,该提示会在输入字段为空时显示,并会在字段获得焦点时消失。假如输入框期望输入的是密码,设置代码如下:
editbox:setPlaceHolder(“请输入密码”)
4. 设置显示文本也可以给输入控件设置默认值。例如想让玩家给游戏角色起名称,在输入框中可以预留一个默认名字,用户可以偷懒不输入新名字,直接单击“确认”开始游戏。
editbox:setText(“路人甲”)
5. 监听输入事件在新建输入控件的时候,可以通过参数传递一个输入事件监听器给该控件,监听系统输入法在整个输入过程中的状态变化情况。示例代码如下:
localfunction onEdit(event, editbox)
if event ==”began”then
— 开始输入
print(“开始输入”)
elseif event ==”changed”then
— 输入框内容发生变化
print(“输入框内容发生变化”)
local text = editbox:getText()
print(text)
elseif event ==”ended”then
— 输入结束
print(“输入结束”)
elseif event ==”return”then
–从输入框返回
print(“从输入框返回”)
end
end
评论
还没有评论。