基础篇 2
第1章 Cocos2d-x开发环境搭建 2
1.1 选择Cocos2d-x3.x的理由 2
1.2 C++11主要新特性 2
1.2.1 nullptr 2
1.2.2 auto 3
1.2.3 lambda函数 3
1.2.4 std::function类型 4
1.2.5 C++11多线程std::thread 4
1.3 Windows 7平台开发环境搭建 6
1.3.1 Win32版本开发环境搭建 6
1.3.2 安装Cocos Studio 2.3.3 9
1.3.3 Android版本开发环境搭建 11
1.4 Mac平台开发环境搭建 13
1.4.1 安装Cocos2d-x 3.9开发环境与创建示例工程 13
1.4.2 运行官方示例工程cpp-tests 15
1.4.3 安装Mac版本的Cocos Studio 16
1.4.4 Android开发环境搭建 17
1.5 小结 19
第2章 Photoshop与Flash——独立手游开发者的必修课 21
2.1 Photoshop CS 6鼠绘技巧与示例 21
2.2 与手游UI制作密切相关的Photoshop技术 22
2.2.1 GIF帧动画制作 22
2.2.2 由GIF动画文件导出一组PNG图像文件 27
2.2.3 GIF时间轴动画 28
2.3 Flash CS 6鼠绘技巧与示例 34
2.4 与手游UI制作密切相关的Flash技术 37
2.4.1 生成Sprite表单 38
2.4.2 尽量不把舞台元件实例集合导出到精灵表单 38
2.4.3 导出库元件集到精灵表单时的注意事项 39
2.4.4 Flash动画简介 40
2.4.5 Flash+DragonBone联合制作heart_ani动画 42
2.5 小结 53
第3章 手游辅助开发利器——TexturePacker和ParticleEditor 55
3.1 图片切片工具TexturePacker 55
3.1.1 为什么要用TexturePacker 55
3.1.2 TexturePacker的基本用法 56
3.1.3 Retina支持——AutoSD 58
3.1.4 TextureSettings面板其他参数说明 60
3.1.5 空当接龙游戏使用的碎图打包技术 61
3.1.6 TexturePacker与XCode集成简介 62
3.2 Windows平台免费开源的粒子编辑器ParticleEditor 63
3.2.1 粒子系统属性讲解 65
3.2.2 官方示例工程cPP-tests中粒子系统使用小结 68
3.2.3 让粒子系统沿着指定轨迹运动 74
3.2.4 SplashScreen场景粒子系统应用回顾 76
3.3 小结 76
实践篇 80
第4章 拇指接龙手游整体策划与设计 80
4.1 拇指接龙游戏创意构思及快照欣赏 80
4.1.1 游戏构思 80
4.1.2 传统拇指接龙游戏算法(玩法)回顾 80
4.1.3 传统空当接龙游戏特点分析 82
4.1.4 目前市场同类游戏简单分析 82
4.1.5 旧瓶装新酿的可能性 83
4.1.6 快照预览 83
4.2 拇指接龙游戏整体数据策划与存储方案 84
4.2.1 数据策划与总体算法分析 84
4.2.2 数据存储方案分析 88
4.3 模块及功能图设计 89
4.3.1 系统总体模块及关系图 89
4.3.2 游戏主场景MainScene流程图 90
4.4 小结 92
第5章 Splash场景设计与多分辨率屏幕适配方案 93
5.1 Splash UI设计 93
5.1.1 设计场景图层文件 93
5.1.2 设计场景中的动画文件 94
5.2 后台代码分析 96
5.2.1 SplashScene头文件定义 96
5.2.2 SplashScene实现文件分析 97
5.3 多分辨率适配方案 102
5.3.1 单例类SmartRes头文件定义 102
5.3.2 单例类SmartRes实现代码 104
5.4 小结 107
第6章 拇指接龙游戏导航场景设计 108
6.1 使用场景编辑器构建场景FirstScene 108
6.1.1 用Cocos Studio 2.3.3创建帧动画 110
6.1.2 用Cocos Studio 2.3.3创建骨骼动画 117
6.1.3 Cocos Studio 2.3.3导出资源应用于编程 120
6.2 游戏导航场景编码设计 122
6.2.1 游戏导航场景功能分析 122
6.2.2 游戏导航场景编码设计 123
6.3 全局变量及SQLite开发技术分析 132
6.3.1 系统中的全局变量 132
6.3.2 两种本地文件存储方案——UserDefault和SQLite数据库 133
6.4 小结 138
第7章 游戏帮助系统设计 139
7.1 FaqScene场景设计 139
7.1.1 FaqScene场景UI设计 139
7.1.2 FaqScene场景编码分析 140
7.1.3 多语言内容显示方案 147
7.2 TutorialScene场景设计 147
7.2.1 概述 148
7.2.2 TutorialScene场景UI设计 150
7.2.3 TutorialScene场景头文件设计 151
7.2.4 TutorialScene场景动画设计 154
7.2.5 TutorialScene场景的双击式移动扑克牌编程 160
7.2.6 TutorialScene场景中拖放式移动扑克牌 166
7.2.7 扑克牌自动飞动的硬编码方式 183
7.2.8 无须扑克牌匹配判定与恢复栈创建 184
7.3 小结 185
第8章 拇指接龙游戏关卡及回合设计 186
8.1 大关卡设计的模拟愤怒的小鸟界面 186
8.1.1 大关卡选择场景UI设计 187
8.1.2 图层内置动画与ImageView Title控件 188
8.1.3 关于艺术数字控件TextAtlas 189
8.1.4 大关卡选择编码的头文件设计 191
8.1.5 大关卡选择编码的实现文件编程 192
8.2 小关卡设计的模拟“RuneMasterPuzzle”界面 198
8.2.1 小关卡选择场景UI设计 198
8.2.2 小关卡选择设计的编码实现 199
8.3 游戏回合选择设计 204
8.3.1 UI设计 204
8.3.2 后台编码 205
8.4 小结 211
第9章 创建通用场景切换类 212
9.1 LoadingScene.h定义 212
9.2 LoadingScene成员函数分析 213
9.3 小结 225
第10章 拇指接龙游戏道具商店设计 227
10.1 了解游戏道具 227
10.1.1 道具定义 227
10.1.2 游戏道具获取方式 228
10.1.3 游戏道具数据库设计 228
10.2 拇指接龙游戏道具数据策划 229
10.2.1 操作撤销道具——undo 229
10.2.2 列重洗牌道具——fan 229
10.2.3 列移动道具——worm 230
10.2.4 wildcard道具——wand 231
10.2.5 Joker道具——net 232
10.2.6 道具——owl 233
10.3 模拟“进击的小怪物”设计道具商店 233
10.3.1 道具商店主界面设计 233
10.3.2 道具购买场景设计 235
10.3.3 诱导玩家安装应用赚积分场景设计 236
10.4 游戏道具商店编码实现 236
10.4.1 由游戏导航场景切换到道具商店系统 236
10.4.2 道具商店系统StoreScene.h分析 237
10.4.3 道具数值定义 239
10.4.4 加载场景资源文件 240
10.4.5 触发道具购买行为编程 242
10.4.6 进行购买道具活动相关编程 244
10.4.7 积分墙相关编程 248
10.5 小结 248
第11章 拇指接龙游戏主场景开发 249
11.1 游戏主场景开发的功能设计 249
11.1.1 道具子系统 250
11.1.2 发牌子系统 250
11.1.3 玩牌子系统 250
11.1.4 奖励子系统 251
11.2 游戏主场景开发的界面设计 251
11.2.1 游戏主场景界面设计 251
11.2.2 主场景工具栏(即游戏场景HUD)设计 253
11.2.3 奖励信息提示图层设计 254
11.2.4 道具使用说明图层设计 255
11.2.5 游戏暂停图层设计 257
11.2.6 游戏继续操作图层设计 258
11.2.7 游戏回合结束小结图层设计 259
11.3 游戏主场景开发的数据结构设计 260
11.3.1 创建扑克牌类——Card 264
11.3.2 定义双击或拖放扑克牌的有关变量 271
11.3.3 定义用于存储扑克牌的数据结构 271
11.4 游戏主场景开发的总体流程设计 272
11.5 Undo道具开发与STL函数 272
11.5.1 Undo道具功能回顾 272
11.5.2 Undo道具有关数据结构与操作 273
11.5.3 使用与定义stackTidying函数 275
11.5.4 使用Undo道具编程 279
11.6 Fan和Worm道具编程 283
11.6.1 Fan道具 283
11.6.2 Worm道具 287
11.7 Wand、Net和Owl道具编程 291
11.7.1 Wand道具 292
11.7.2 Net道具 298
11.7.3 Owl道具 303
11.8 奖励机制编程 307
11.8.1 拇指接龙游戏奖励子系统功能模块 308
11.8.2 奖励定义 308
11.8.3 奖励相关编程分析 310
11.8.4 奖励系统监控与执行 318
11.9 扑克牌拖放与单击事件编程 322
11.9.1 onTouchBegan函数总体执行流程示意图 323
11.9.2 屏幕单击事件编程 325
11.9.3 onTouchMoved函数总体执行流程示意图 336
11.9.4 onTouchEnded函数总体执行流程示意图 339
11.10 游戏进程监控编程 341
11.10.1 游戏系统时间监控 341
11.10.2 奖品监控 341
11.10.3 游戏全程监控机制 343
11.10.4 缺憾 348
11.11 游戏暂停编程 348
11.11.1 功能模块图 348
11.11.2 暂停模块编程 349
11.12 双击式移动扑克牌编程 353
11.13 拖放单张扑克牌编程 358
11.14 拖放多张扑克牌编程 371
11.14.1 onTouchBegan()函数主要功能总结 372
11.14.2 onTouchMoved()函数主要功能总结 372
11.14.3 onTouchEnded函数内系列扑克牌执行流程示意图 374
11.15 小结 378
高级扩展篇 382
第12章 iOS移植的Objective-C编程知识必备 382
12.1 必须了解的Objective-C 2.0编程知识 382
12.1.1 Objective-C语言特性的Block 382
12.1.2 委托和协议 386
12.1.3 Objective-C=编译器+运行时 388
12.2 iOS应用程序文件夹架构 388
12.2.1 文件main.m的作用 388
12.2.2 UIApplicationMain函数 389
12.2.3 应用程序委托 390
12.2.4 视图控制器 390
12.2.5 Info.plist文件 390
12.2.6 图标和默认图像 391
12.2.7 沙盒机制 391
12.2.8 MVC编程规范 391
12.3 iOS应用程序生命周期分析 391
12.3.1 应用程序的状态 392
12.3.2 各个程序运行状态时代理的回调 392
12.3.3 加载应用程序进入前台 395
12.3.4 加载应用程序进入后台 396
12.3.5 基于警告式响应中断 396
12.3.6 进入后台运行 397
12.3.7 返回前台运行 399
12.3.8 程序终止 399
12.3.9 The Main Run Loop主运行循环 400
12.4 iOS应用程序MVC架构 400
12.4.1 MVC框架结构 400
12.4.2 深入理解UIViewController类 401
12.5 Cocos2d-x框架下iOS版本的AppController 404
12.6 Objective-C反射技术回顾 405
12.6.1 获取Class 406
12.6.2 确定继承关系 406
12.6.3 方法的动态调用 407
12.7 C++与Objective-C混合编程 409
12.7.1 Objective-C和C++混编支持 409
12.7.2 结构成员与类成员 411
12.7.3 关于命名空间 412
12.7.4 关于C++模板 412
12.7.5 关于异常处理 412
12.8 EasyNDK的iOS版深入剖析 412
12.8.1 实现原理图展示 413
12.8.2 EasyNDK-for-cocos2dx-master下载Demo应用全面剖析 413
12.8.3 总结EasyNDK的使用套路 419
12.9 参考资料 419
第13章 Android移植的Java&NDK编程知识必备 420
13.1 Android应用程序体系架构 420
13.2 Android应用程序基本组件 421
13.2.1 Activity与View 421
13.2.2 Service与Activity 422
13.2.3 Intent类和IntentFilter类 424
13.2.4 Android应用程序生命周期 425
13.3 了解Android应用UI设计 425
13.3.1 丰富的可视化控件 426
13.3.2 关联后台代码与前台UI 427
13.4 Android事件处理机制 428
13.4.1 组件间消息传递——Intent 428
13.4.2 线程间消息传递——Message 429
13.5 EasyNDK的Android版深入剖析 430
13.5.1 实现原理图 431
13.5.2 EasyNDK-for-cocos2dx-master下载Demo应用全面分析 431
13.5.3 Classes文件夹下子文件夹jansson和NDKHelper 432
13.5.4 EasyNDK\proj.android \src\com\easyndk文件夹下内容解析 433
13.5.5 Classes下文件Hello WorldScene.cpp分析 434
13.5.6 总结EasyNDK的使用套路 434
13.6 小结 435
第14章 拇指接龙集成社交分享ShareSDK for iOS 436
14.1 下载ShareSDK iOS版本 436
14.2 下载ShareSDK iOS版本的Cocos2d-x插件 437
14.3 添加必需的依赖库 438
14.4 Cocos2d-x插件部分有关编程 439
14.4.1 选择需要的平台SDK和Cocos2d-x环境 439
14.4.2 修改AppDelegate.cpp文件——初始化 440
14.5 ShareSDK接口的调用 441
14.6 截图欣赏 443
14.7 小结 444
第15章 拇指接龙集成社交分享ShareSDK for Android 445
15.1 通用部分集成步骤 445
15.1.1 下载ShareSDK For COCOS2D-X 445
15.1.2 初始化ShareSDK并配置社交平台信息 446
15.1.3 分享内容、用户授权及获取用户资料 447
15.2 Android部分集成步骤 452
15.3 其他说明 453
15.3.1 ShareSDK.xml配置文件说明 453
15.3.2 java层代码解释 454
15.4 效果图展示 454
15.5 小结 455
第16章 拇指接龙游戏集成有米积分墙的Android版 457
16.1 积分墙概述 457
16.1.1 计费方式 457
16.1.2 展现方式 457
16.2 有米积分墙的基本配置 458
16.2.1 导入SDK 458
16.2.2 权限配置 458
16.2.3 广告组件配置 458
16.2.4 初始化 459
16.2.5 混淆配置 459
16.2.6 打包 459
16.2.7 设置渠道号(推荐) 459
16.3 集成有米积分墙代码 460
16.3.1 初始化 460
16.3.2 展示全屏积分墙 460
16.3.3 展示悬浮半屏积分墙 460
16.3.4 积分管理接口 461
16.4 积分墙高级功能 462
16.4.1 积分余额变动通知 462
16.4.2 客户端SDK获取订单信息 463
16.4.3 服务器获取订单信息 464
16.4.4 验证积分墙配置是否正确 464
16.4.5 配置积分墙SDK的积分到账提醒 465
16.5 使用EasyNDK简化有米积分墙集成 465
16.5.1 C++端调用Java端 465
16.5.2 Java端调用C++端 466
16.5.3 下载并解压EasyNDK for Cocos2d-x 468
16.5.4 Classes文件夹下的复制 468
16.5.5 proj.android中src文件夹下的复制 469
16.5.6 ThumbelinaCell.java代码修改 469
16.5.7 修改Android.mk文件 470
16.5.8 修改StoreScene.cpp文件 470
16.6 软件截图欣赏 471
16.6.1 提示玩家积分交换 471
16.6.2 积分墙界面 472
16.7 游戏中积分墙相关数据算法 472
16.7.1 集成有米积分墙时的典型问题 472
16.7.2 有米广告过滤列表中显示的数据形式 473
16.7.3 由道具价格推算积分墙显示数据 474
16.7.4 我们的算法推算 475
16.8 小结 476
第17章 弱联网手游开发的云存储技术 477
17.1 Firebase(国外) 477
17.2 AppWarp(国外) 478
17.3 野狗(国内) 479
17.4 LeanCloud(国内) 480
17.4.1 数据存储服务 480
17.4.2 消息推送服务 481
17.4.3 实时通信服务 481
17.4.4 iOS/OSX数据存储开发 481
17.5 关于Pomelo和Firefly等 483
17.6 小结 484