编辑推荐
全面介绍了使用libGDX进行游戏开发时所需要用到的知识
实用性强,内容详细,不仅适合有一定经验的开发者,对于那些没有经验的开发者来说,也是一本很好的入门指南。
作者曾就任于创新工场等大型公司,CSDN的博客专家,具有丰富的开发经验。
libGDX是一个跨平台的2D/3D的游戏开发框架,是一款游戏引擎。
本书全面介绍了使用libGDX进行游戏开发时所需要用到的知识。其中包括libGDX的详细介绍、libGDX的UI编程、libGDX的配套开发工具、libGDX 中所遇到的一些问题的解决方案。
本书具有以下特色:
起点低:面向没有编程经验的读者,能从零开始学会游戏开发 。
看得懂:每个知识点都配有实例,帮助读者在实践中加深理解。
学得会:所有实例都配有详细的注释,让读者明白每行代码的意义。
用得着:学完本书,读者将能独立开发出一款属于自己的游戏。
内容简介
随着移动互联网的快速发展,移动端的游戏开发已经成为发展迅速、市场潜力巨大、前景诱人的开发方向。作为一种游戏引擎,libGDX让更多梦想加入游戏开发的人圆梦。本书全面介绍了使用libGDX进行游戏开发时所需要用到的知识,其中包括libGDX的详细介绍、libGDX的UI编程、libGDX的配套开发工具、libGDX 中所遇到的一些问题的解决方案。
本书并不局限于介绍libGDX编程的各种理论知识,而是从“项目驱动”的角度来讲授理论,全书给出了丰富的实例,这些示范性的实例既可帮助读者更好地理解各知识点在实际开发中的应用,也可供读者在实际开发时作为参考。本书还提供了两个实用的案例:捡金币项目和2048项目,具有很高的参考价值。
本书实用性强,内容详细,不仅适合有一定经验的开发者,对于那些没有经验的开发者来说,也是一本很好的入门指南。
作者简介
黄俊东,大众点评 客户端研发工程师。南京邮电大学毕业,曾就任于创新工场等大型公司,CSDN的博客专家。具有丰富的开发经验,具有3年Android平台上的开发经验,熟悉Java Web开发、Android开发和游戏开发。开发并发布过多个APP和游戏,如《FashioGirls》等Google Play上较为火热的游戏,尤其对libGDX开发有深入的研究。
目录
- 第1章 libGDX简介t1
- 1.1 libGDX介绍t1
- 1.1.1 libGDX的特点t1
- 1.1.2 libGDX中的工具t3
- 1.1.3 libGDX的历史t5
- 1.1.4 我的libGDX版本t5
- 1.2 搭建libGDX开发环境t5
- 1.2.1 libGDX下载t6
- 1.2.2 Android项目的新建t7
- 1.2.3 libGDX的安装t9
- 1.3 开始第一个libGDX游戏t11
- 1.3.1 第一个HelloWorld程序的编写t11
- 1.3.2 在Android设备上调试t15
- 1.3.3 桌面调试环境的搭建t17
- 1.3.4 HelloWorld程序的简单分析t22
- 1.4 运行libGDX的官方Demot23
- 1.4.1 libGDX的官网t23
- 1.4.2 Demo的下载演示t24
- 1.5 其他的一些准备工作t25
- 1.5.1 关联Android源码t25
- 1.5.2 libGDX源码的关联t28
- 1.5.3 直接打开.jar文件的配置t30
- 第2章 libGDX的架构分析t34
- 2.1 生命周期t34
- 2.1.1 libGDX中生命周期的图示t34
- 2.1.2 生命周期中各个函数的分析t35
- 2.1.3 实例:通过例子深刻理解生命
- 周期t35
- 2.2 模块t38
- 2.2.1 libGDX模块组成的图示t38
- 2.2.2 libGDX模块的分析t39
- 2.3 运行环境的相关查询t40
- 2.3.1 获取目前的运行环境t40
- 2.3.2 获取内存的消耗情况t41
- 2.4 日志工具t41
- 2.4.1 Android中的日志等级及输出方法t41
- 2.4.2 libGDX中的日志等级及输出方法t42
- 2.4.3 一种方便的输出日志的方法t44
- 第3章 数据存储t45
- 3.1 简介t45
- 3.2 Android中SharedPreferences的使用t45
- 3.2.1 获得一个SharedPreferences对象t46
- 3.2.2 从SharedPreferences获取数据t46
- 3.2.3 往SharedPreferences 保存数据t46
- 3.2.4 实例:使用Android中的
- SharedPreferences来实现
- 存取数据t47
- 3.3 libGDX对SharedPreferences的支持t49
- 3.3.1 获得一个SharedPreferences数据t49
- 3.3.2 从SharedPreferences获取数据t49
- 3.3.3 往SharedPreferences保存数据t49
- 3.3.4 实例:使用libGDX对
- SharedPreferences的支持
- 来实现数据的存取t50
- 3.4 Android中操作XML形式的数据t51
- 3.4.1 XML的定义t51
- 3.4.2 XML的优缺点t52
- 3.4.3 Android中使用DOM来解析
- XML形式的数据t52
- 3.4.4 Android中使用DOM来生成
- XML形式的数据t55
- 3.4.5 Android中使用SAX来解析
- XML形式的数据t58
- 3.4.6 Android中使用SAX来生成
- XML形式的数据t61
- 3.4.7 Android中使用PULL来解析
- XML形式的数据t64
- 3.4.8 Android中使用PULL来生成
- XML形式的数据t67
- 3.5 libGDX对XML的支持t70
- 3.5.1 使用libGDX中的接口将生成
- XML形式的数据t70
- 3.5.2 使用libGDX中的接口解析
- XML形式的数据t72
- 3.6 Android中操作JSON格式的数据t74
- 3.6.1 JSON的定义t74
- 3.6.2 JSON的优缺点t74
- 3.6.3 Android中JSON的原始解析
- 方法t75
- 3.6.4 Android中JSON的原始生成
- 方法t78
- 3.6.5 Android中使用Gson来解析
- JSON形式的数据t79
- 3.6.6 Android中使用Gson来生成
- JSON形式的数据t80
- 3.6.7 Android中使用FastJson来解析
- JSON形式的数据t81
- 3.6.8 Android中使用FastJson来生成
- JSON形式的数据t83
- 3.6.9 以上3种操作JSON格式数据的
- 方法的简单比较t83
- 3.7 libGDX中对JSON格式数据的支持t83
- 3.7.1 使用libGDX中的API生成
- JSON形式的数据t83
- 3.7.2 使用libGDX中的API解析
- JSON形式的数据t86
- 3.8 XML与JSON的简单比较t86
- 3.8.1 关于轻量级和重量级t86
- 3.8.2 关于数据格式编码及解析难度t87
- 3.9 libGDX中的文件处理t87
- 3.9.1 几种文件存储路径t88
- 3.9.2 检查存储路径是否可用t88
- 3.9.3 获得一个FileHandle实例t89
- 3.9.4 对FileHandle的常见操作t89
- 3.9.5 读取文件t90
- 3.9.6 写文件t90
- 3.9.7 使用FileHandle来删除、拷贝、
- 移动、重命名文件t90
- 第4章 libGDX中的UI编程t92
- 4.1 绘制的基础—SpriteBatch类的介绍t92
- 4.1.1 SpriteBatch的功能t92
- 4.1.2 基本APIt92
- 4.2 中文字符的显示—hiero工具的
- 介绍与基本使用t92
- 4.2.1 hiero工具的下载t93
- 4.2.2 hiero的功能界面剖析t93
- 4.2.3 利用hiero生成程序中要用的
- 字体文件t94
- 4.3 文本信息的显示—BitmapFont类的
- 基本使用t95
- 4.3.1 BitmapFont的功能t95
- 4.3.2 基本APIt95
- 4.3.3 实例:使用BitmapFont来显示
- 一段文本信息t95
- 4.4 自定义的中文字体的显示
- —TTF字库的介绍与使用t97
- 4.4.1 功能t97
- 4.4.2 基本APIt97
- 4.4.3 使用优美字体前的准备t98
- 4.4.4 实例:显示一段帅气的文本t98
- 4.5 图片的显示(1)—Texture类的介绍
- 及基本使用t100
- 4.5.1 功能t100
- 4.5.2 基本APIt100
- 4.5.3 实例:使用SpriteBatch和Texture
- 在屏幕中显示一张图片t101
- 4.6 图片的显示(2)—TextureRegion
- 类的介绍与基本使用t103
- 4.6.1 功能t103
- 4.6.2 基本APIt103
- 4.6.3 实例:使用SpriteBatch和
- TextureRegion在屏幕中显示
- 一张图片t104
- 4.7 图片的显示(3)—Sprite类的介绍
- 与基本使用t105
- 4.7.1 功能t105
- 4.7.2 基本APIt105
- 4.7.3 实例:旋转的精灵t106
- 4.8 libGDX中的合图(1)—合图工具
- TexturePacker 的介绍与基本使用t107
- 4.8.1 TexturePacker的下载t108
- 4.8.2 TexturePacker功能界面剖析t108
- 4.8.3 利用TexturePacker进行合图t109
- 4.9 libGDX中的合图(2)—TextureAtlas
- 类的介绍与基本使用t111
- 4.9.1 功能t111
- 4.9.2 基本APIt111
- 4.9.3 实例:使用TextureAtlas后的
- 图片的使用t111
- 4.10 自定义动画—Animation类的介绍
- 与基本使用t113
- 4.10.1 功能t113
- 4.10.2 基本APIt113
- 4.10.3 实例:奔跑的小人t114
- 4.11 libGDX中的粒子编辑器(1)
- —Particle-Editor的介绍与基本使用t116
- 4.11.1 下载t116
- 4.11.2 功能界面剖析t117
- 4.11.3 利用粒子编辑器生成相应文件t118
- 4.12 libGDX中的粒子编辑器(2)
- —ParticleEffect类的介绍与基本
- 使用t119
- 4.12.1 功能t119
- 4.12.2 基本APIt119
- 4.12.3 实例:类似于的烟火效果t119
- 第5章 libGDX中的常见UI组件t122
- 5.1 演员与舞台的简单介绍t122
- 5.2 文本信息的显示—Label、LabelStyle类的介绍与基本使用t122
- 5.2.1 功能t122
- 5.2.2 基本APIt122
- 5.2.3 实例:用Label显示一段文本
- 信息t123
- 5.3 图片的显示—Image类的介绍与
- 基本使用t124
- 5.3.1 功能t124
- 5.3.2 基本APIt125
- 5.3.3 实例:实现一个“旋转的飞机”t125
- 5.4 Image生成的另外一种方式—Pixmap
- 类的介绍与基本使用t126
- 5.4.1 功能t127
- 5.4.2 基本APIt127
- 5.4.3 实例:使用Pixmap来画多种
- 几何图形t127
- 5.4.4 实例:使用Pixmap来生成
- 涂抹功能t129
- 5.4.5 Pixmap在使用时需要注意的
- 问题—白屏问题t133
- 5.5 图片翻转的两种方式t134
- 5.5.1 图片翻转的第一种方式—
- 使用TextureRegion的flip( )t134
- 5.5.2 图片翻转的第二种方式—
- 通过SpriteBatch的draw()方法t135
- 5.6 滚动条—ScrollPane的介绍与基本
- 使用t137
- 5.6.1 功能t137
- 5.6.2 基本APIt137
- 5.6.3 实例:使用ScrollPane实现一个
- 选关界面t137
- 5.7 游戏中的背景移动t139
- 5.7.1 原理分析t139
- 5.7.2 实现天天打飞机中的“背景
- 移动”t141
- 5.8 演员的常见动画的介绍与基本使用t143
- 5.8.1 旋转动画—rotateTo与rotateByt144
- 5.8.2 位移动画—moveTo与moveByt144
- 5.8.3 透明度渐变动画—fadeIn()
- 与fadeOut()t145
- 5.8.4 缩放动画—scaleTo()与scaleBy()t145
- 5.8.5 组合动画—顺序动画与并行
- 动画t145
- 5.8.6 实例:Tween动画的综合例子t146
- 5.9 按钮—Button类的介绍与基本使用t148
- 5.9.1 功能t148
- 5.9.2 基本APIt148
- 5.9.3 实例:使用Button来控制一个
- loading图片t149
- 5.10 游戏摇杆—TouchPad的介绍与
- 基本使用t153
- 5.10.1 功能t153
- 5.10.2 基本APIt154
- 5.10.3 实例:使用游戏摇杆控制
- 游戏元素t155
- 5.11 滑块—Slider的介绍与基本使用t159
- 5.11.1 功能t159
- 5.11.2 基本APIt160
- 5.11.3 实例:使用滑块Slider来控制
- 游戏元素的缩放t161
- 5.12 分割窗口—SplitPane的介绍与
- 基本使用t165
- 5.12.1 功能t166
- 5.12.2 基本APIt166
- 5.12.3 实例:使用分割窗口SplitPane
- 来实现一个分割窗口t167
- 5.13 复选框—CheckBox的介绍与基本
- 使用t170
- 5.13.1 功能t171
- 5.13.2 基本APIt171
- 5.13.3 实例:使用复选框CheckBox
- 来控制画面的切换t172
- 5.14 列表—List的介绍与基本使用t176
- 5.14.1 功能t176
- 5.14.2 基本APIt177
- 5.14.3 实例:使用列表List来显示
- 内容t178
- 5.15 文本输入框—TextField的介绍与
- 基本使用t181
- 5.15.1 功能t181
- 5.15.2 基本APIt181
- 5.15.3 实例:使用文本输入框TextField
- 来实现文本信息的输入t183
- 第6章 libGDX中的事件处理与音效t188
- 6.1 InputProcessor的介绍与基本使用t188
- 6.1.1 InputMultiplexer的介绍与基本
- 使用t189
- 6.1.2 实例:使用按钮来操控滚动条t190
- 6.2 振动器的介绍与使用t192
- 6.2.1 准备工作—添加相应的权限t192
- 6.2.2 基本APIt193
- 6.2.3 实例:按按钮触发振动t193
- 6.3 back键和menu键的捕捉t194
- 6.4 短音频文件的处理—Sound类的介绍
- 与基本使用t195
- 6.4.1 功能t195
- 6.4.2 基本APIt195
- 6.4.3 实例:给按钮添加单击声音t195
- 6.5 长音频文件的处理—Music类的介绍
- 与基本使用t196
- 6.5.1 功能t197
- 6.5.2 基本APIt197
- 6.5.3 实例:单击某一个按钮播放音乐t197
- 第7章 资源加载器、游戏界面的跳转以及
- 物理引擎t199
- 7.1 资源加载器—AssetManager类的介绍
- 与基本使用t199
- 7.1.1 功能t199
- 7.1.2 基本APIt200
- 7.1.3 实例:游戏中的loading界面
- 第一部分t200
- 7.1.4 实例:游戏中的loading界面
- 第二部分t203
- 7.2 游戏界面的跳转t204
- 7.2.1 第一种方式—隐藏其中一个,
- 显示另外一个t204
- 7.2.2 第二种方式—setScreen()t206
- 7.3 libGDX中的物理引擎—Box2D
- 基础t209
- 7.3.1 基础类概览t209
- 7.3.2 基础类的详细介绍t210
- 7.3.3 实例:下降的小球与砖块t213
- 第8章 libGDX中的UI编辑器t216
- 8.1 让CocosStudio成为libGDX的UI
- 编辑器t216
- 8.2 CocosStudio的UI编辑器的基本
- 使用t217
- 8.2.1 新建项目t217
- 8.2.2 调整屏幕大小t218
- 8.2.3 导入资源t219
- 8.2.4 摆放素材t219
- 8.2.5 设置元素属性t220
- 8.2.6 修改元素的名字t221
- 8.2.7 保存项目t221
- 8.3 解析CocosStudio的UI文件t221
- 8.3.1 找到数据文件t221
- 8.3.2 简单分析数据文件t222
- 8.3.3 编写代码解析JSON文件t223
- 8.3.4 CocosStudio解析工具类的基本
- 用法t228
- 8.3.5 让CocosStudio UI编辑器的数据
- 在libGDX中完美运行t229
- 8.4 CocosStudio生成的JSON文件中的
- 隐患及解决方案t231
- 8.4.1 隐患分析t231
- 8.4.2 解决方案t231
- 第9章 小游戏实战—捡金币t232
- 9.1 游戏的感性认识t232
- 9.1.1 游戏运行效果图t232
- 9.1.2 组成分析t233
- 9.2 金币、背景的实现的原理分析t233
- 9.3 游戏成就的原理分析及游戏中的
- 碰撞检测t233
- 9.3.1 检测的简单介绍t234
- 9.3.2 游戏成就的原理分析t234
- 9.4 成功界面与失败界面的原理分析t234
- 9.5 剩余时间的原理分析t235
- 9.6 代码实现t235
- 9.6.1 金币(Jinbi) 逻辑体的实现t235
- 9.6.2 工具类(Utils)的实现t237
- 9.6.3 背景(BgImage)逻辑体的实现t237
- 9.6.4 游戏主逻辑体MyGamet239
- 9.6.5 Android与libGDX交互类
- MainActivity的编写t244
- 第10章 休闲类游戏—2048t245
- 10.1 2048的由来及功能概述t245
- 10.1.1 2048的由来t245
- 10.1.2 功能简介t245
- 10.2 游戏的策划及准备工作t247
- 10.2.1 游戏的策划t247
- 10.2.2 Android平台下游戏的准备工作t247
- 10.3 游戏的架构t248
- 10.3.1 游戏中用到的主要技术t248
- 10.3.2 各类的简要介绍t248
- 10.3.3 游戏的框架简介t249
- 10.3.4 游戏中核心逻辑的几个要点t250
- 10.4 游戏程序入口的设计与实现t251
- 10.4.1 MainActivity的实现t251
- 10.4.2 MyGame类的实现t252
- 10.5 游戏主界面GameScreen的设计与
- 实现t253
- 10.5.1 游戏主界面的框架设计t253
- 10.5.2 游戏主界面GameScreen的
- 实现t257
- 10.6 游戏中所涉及的各个逻辑体t270
- 10.6.1 资源管理类Assets的设计t270
- 10.6.2 资源管理类Assets的实现t271
- 10.6.3 游戏中的常量类Contantst272
- 10.6.4 游戏中分数逻辑体Score类的
- 设计与实现t273
- 10.6.5 每种分值对应的颜色的逻辑体
- Square的设计t274
- 10.6.6 Square类的实现t275
- 10.6.7 分数格子逻辑体Cell类的设计t279
- 10.6.8 分数格子逻辑体Cell类的实现t280
- 10.6.9 数据存储与恢复逻辑体Prefs
- 的设计t285
- 10.6.10 数据存储与恢复逻辑体Prefs
- 的实现t285
- 10.7 游戏的优化与改进t289