作品简介

Cocos2d-x游戏实战指南》融合了作者多年的游戏开发经验和丰富的培训经验,深入浅出地介绍了Cocos2d-x各方面的知识,从开发环境搭建,到控件、菜单、Action等常用技术,再到Sprite3D、粒子系统、瓦片地图、物理引擎、骨骼动画、混合开发等高级技术,最后还通过一个完整的游戏案例《星空大战》来贯穿整个知识体系,帮助读者将理论知识和实际项目开发进行完美的结合。本书配套全新设计的案例演示系统,便于准确寻找对应章节的演示程序;知识点极为丰富,涵盖了所有Cocos2d-x游戏开发的核心内容;通过数万行代码和近百个案例,深入地学习各种开发技巧;商业级游戏案例,体验游戏开发的完整过程。

李宁,曾获东北大学计算机专业硕士学位,拥有超过20年软件开发经验、7年移动应用和手机游戏开发经验,欧瑞科技创始人&CEO。获得CVP(Cocos最有价值专家)荣誉称号。长期担任企业内训讲师(已经为上百家企业提供了移动开发培训,培训学员数干名)、高级技术顾问。10年来,出版了30多本IT图书,并在个人博客撰写了1000万字以上的技术文章。在移动开发领域有极其丰富的经验,领导团队开发了大量的移动App及游戏产品。先后为多家培训机构开设了移动开发就业课程,被聘为51CTO学院特级讲师。截至目前,已经发布了53个课程,累计2279个课时,包括“完全征服ReactNative”“从零开始掌握Cocos2d—x3.x”“Java Script/ES6/ES7系列课程”“iOS8/iOS9系列课程”“苹果Swifc语言开发精品套餐课程”等,累计培训学员近50万人,好评率达96%。本书配套视频教程《Cocos2d—x3×系列》也在51CTO学院独家发布,自上线以来已有近20万名学员学习,受到了51CTO社区广大开发者的一致推崇。

作品目录

  • 作者简介
  • 内容简介
  • 前言 PREFACE
  • 第1章 初识Cocos2d-x
  • 1.1 跨平台的由来
  • 1.2 跨平台开发模式的种类和优缺点
  • 1.2.1 虚拟机与跨平台技术
  • 1.2.2 Web与跨平台技术
  • 1.2.3 跨平台编译技术
  • 1.2.4 为每个平台定制本地应用
  • 1.3 跨平台游戏引擎
  • 1.3.1 什么是跨平台游戏引擎
  • 1.3.2 有哪些游戏引擎可以跨平台
  • 1.4 Cocos2d-x横空出世
  • 1.4.1 Cocos2d-x的前世今生
  • 1.4.2 Cocos2d-x的特点
  • 1.5 小结
  • 第2章 搭建和使用跨平台Cocos2d-x开发环境
  • 2.1 使用Cocos2d-x开发游戏需要准备些什么
  • 2.2 Cocos2d-x 3.10开发环境的最低要求
  • 2.3 让Eclipse支持C++ 11
  • 2.4 Cocos2d-x 3.10开发环境的安装、配置和使用
  • 2.4.1 Cocos2d-x 3.10的目录结构
  • 2.4.2 使用cocos建立跨平台工程
  • 2.4.3 编译和运行Cocos2d-x 3.10 for iOS/Mac程序
  • 2.4.4 编译和运行Cocos2d-x 3.10 for Android程序
  • 2.4.5 编译和运行Cocos2d-x 3.10 for Win32程序
  • 2.5 Cocos2d-x 3.10例子代码的使用
  • 2.6 小结
  • 第3章 Cocos2d-x默认工程模板的架构和源代码分析
  • 3.1 Cocos2d-x实现跨平台的原理
  • 3.2 默认场景类HelloWorldScene的实现原理分析
  • 3.3 控制横竖屏切换
  • 3.4 小结
  • 第4章 Cocos2d-x中的核心类
  • 4.1 导演类(Director)
  • 4.1.1 Director类与初始化Cocos2d-x
  • 4.1.2 结束、暂停与恢复Cocos2d-x程序
  • 4.1.3 获取窗口的尺寸和位置
  • 4.1.4 Director类中的其他成员方法
  • 4.2 节点类(Node)
  • 4.2.1 节点类的功能
  • 4.2.2 节点类的成员方法
  • 4.2.3 Cocos2d-x对象的创建、自动释放(Autorelease)与ARC
  • 4.2.4 CREATE_FUNC宏与create方法
  • 4.2.5 Cocos2d-x中的坐标系
  • 4.2.6 节点的移动、缩放和旋转
  • 4.3 场景类(Scene)
  • 4.3.1 创建场景
  • 4.3.2 运行和切换场景
  • 4.3.3 场景切换的各种特效
  • 4.4 图层类(Layer)
  • 4.4.1 Layer类的基本应用
  • 4.4.2 Layer的子类
  • 4.4.3 颜色图层类(LayerColor)
  • 4.4.4 颜色渐变图层类(LayerGradient)
  • 4.4.5 多图层管理类(LayerMultiplex)
  • 4.5 精灵类(Sprite)
  • 4.5.1 Sprite类
  • 4.5.2 贴图类(Texture2D)和贴图缓冲类(TextureCache)
  • 4.5.3 精灵批处理类(SpriteBatchNode)
  • 4.5.4 精灵框架类(SpriteFrame)
  • 4.5.5 精灵框架缓冲类(SpriteFrameCache)
  • 4.5.6 九宫格缩放精灵类(Scale9Sprite)
  • 4.6 集合类(Vector和Map)
  • 4.7 小结
  • 第5章 标签、菜单与控件
  • 5.1 标签类
  • 5.1.1 LabelTTF标签 (使用TTF字体文件)
  • 5.1.2 LabelAtlas标签 (需要截取图像)
  • 5.1.3 LabelBMFont标签 (使用FNT字体文件)
  • 5.1.4 生成FNT字体文件
  • 5.2 菜单(Menu)与菜单项(MenuItem)
  • 5.2.1 菜单(Menu)类
  • 5.2.2 标签菜单项(MenuItemLabel)
  • 5.2.3 字体菜单项(MenuItemFont)
  • 5.2.4 精灵菜单项(MenuItemSprite)
  • 5.2.5 图像菜单项(MenuItemImage)
  • 5.2.6 开关菜单项(MenuItemToggle)
  • 5.3 控件
  • 5.3.1 UI布局(Layout)
  • 5.3.2 文本控件(Text、TextAtlas和TextBMFont)
  • 5.3.3 按钮控件(Button)
  • 5.3.4 文本输入框控件(TextField)
  • 5.3.5 高级文本输入框控件(EditBox)
  • 5.3.6 复选框控件(CheckBox)
  • 5.3.7 (ControlSwitch)
  • 5.3.8 图像框控件(ImageView)
  • 5.3.9 进度条控件(LoadingBar)
  • 5.3.10 滑杆控件(Slider)
  • 5.3.11 高级滑杆控件(ControlSlider)
  • 5.3.12 步进控件(ControlStepper)
  • 5.3.13 列表控件(ListView)
  • 5.3.14 表格控件(TableView)
  • 5.3.15 滚动视图控件(ScrollView)
  • 5.3.16 分页控件(PageView)
  • 5.3.17 颜色选择控件(ControlColourPicker)
  • 5.4 小结
  • 第6章 本地化
  • 6.1 自适应屏幕分辨率
  • 6.1.1 尺寸类型及屏幕适配原理
  • 6.1.2 Cocos2d-x中的各种尺寸深度详解
  • 6.1.3 分辨率策略(ResolutionPolicy)
  • 6.1.4 通过设计尺寸进行屏幕适配
  • 6.1.5 通过内容缩放因子进行屏幕适配
  • 6.1.6 为每一个Node单独调整尺寸
  • 6.2 Cocos2d-x多语言适配
  • 6.3 小结
  • 第7章 Cocos2d-x中的事件处理机制
  • 7.1 触摸事件与移动节点
  • 7.2 多点触摸
  • 7.3 键盘响应事件
  • 7.4 鼠标响应事件
  • 7.5 加速度传感器事件
  • 7.6 自定义事件
  • 7.7 小结
  • 第8章 网络技术
  • 8.1 HttpClient类
  • 8.1.1 发送Http Get请求
  • 8.1.2 发送Http Post请求
  • 8.2 WebSocket类
  • 8.3 SocketIO类
  • 8.4 小结
  • 第9章 Cocos2d-x中的动作类
  • 9.1 所有动作的基类(Action)
  • 9.2 位置(Position)动作
  • 9.2.1 沿直线匀速移动动作(MoveBy/MoveTo)
  • 9.2.2 跳跃动作(JumpBy/JumpTo)
  • 9.2.3 贝塞尔曲线动作(BezierBy/BezierTo)
  • 9.2.4 固定张力的样条曲线动作(CatmullRomBy/CatmullRomTo)
  • 9.2.5 可变张力的样条曲线动作(CardinalSplineBy/CardinalSplineTo)
  • 9.3 旋转与缩放动作
  • 9.3.1 旋转动作(RotateBy/RotateTo)
  • 9.3.2 缩放动作(ScaleBy/ScaleTo)
  • 9.4 执行规则动作
  • 9.4.1 顺序执行动作(Sequence)
  • 9.4.2 并行动作(Spawn)
  • 9.4.3 重复执行动作(Repeat)
  • 9.4.4 无限循环动作(RepeatForever)
  • 9.4.5 反序动作(ResverseTime)
  • 9.5 控制节点显示和隐藏的动作
  • 9.5.1 闪烁动作(Blink)
  • 9.5.2 淡入淡出动作(FadeIn/FadeOut)
  • 9.5.3 透明度渐变动作(FadeTo)
  • 9.5.4 颜色渐变动作(TintBy/TintTo)
  • 9.6 可立即执行的动作
  • 9.7 回调函数动作(CallFunc/CallFuncN)
  • 9.8 变速动作(Ease Action)
  • 9.8.1 幂加速动作(EaseIn)
  • 9.8.2 幂减速动作(EaseOut)
  • 9.8.3 幂加速减速动作(EaseInOut)
  • 9.8.4 指数加速动作(EaseExponentialIn)
  • 9.8.5 指数减速动作(EaseExponentialOut)
  • 9.8.6 指数加速减速动作(EaseExponentialInOut)
  • 9.8.7 正弦加速动作(EaseSineIn)
  • 9.8.8 正弦减速动作(EaseSineOut)
  • 9.8.9 正弦加速减速动作(EaseSineInOut)
  • 9.8.10 弹性加速动作(EaseElasticIn)
  • 9.8.11 弹性减速动作(EaseElasticOut)
  • 9.8.12 弹性加速减速动作(EaseElasticInOut)
  • 9.8.13 弹跳加速动作(EaseBounceIn)
  • 9.8.14 弹跳减速动作(EaseBounceOut)
  • 9.8.15 弹跳加速减速动作(EaseBounceInOut)
  • 9.8.16 回退加速动作(EaseBackIn)
  • 9.8.17 回退减速动作(EaseBackOut)
  • 9.8.18 回退加速减速动作(EaseBackInOut)
  • 9.9 网格动作(Grid Action)
  • 9.9.1 实现测试网格动作的基类
  • 9.9.2 2D波浪动作(Waves)
  • 9.9.3 3D波浪动作(Waves3D)
  • 9.9.4 水平3D翻转动作(FlipX3D)
  • 9.9.5 垂直3D翻转动作(FlipY3D)
  • 9.9.6 3D震动动作(Shake3D)
  • 9.9.7 3D透镜动作(Lens3D)
  • 9.9.8 3D波纹动作(Ripple3D)
  • 9.9.9 流体动作(Liquid)
  • 9.9.10 旋转变形动作(Twirl)
  • 9.9.11 3D瓦片震动动作(ShakyTiles3D)
  • 9.9.12 3D瓦片破碎动作(ShatteredTiles3D)
  • 9.9.13 3D瓦片洗牌动作(ShuffleTiles)
  • 9.9.14 瓦片从左下角到右上角淡出动作(FadeOutTRTiles)
  • 9.9.15 瓦片从右上角到左下角淡出动作(FadeOutBLTiles)
  • 9.9.16 瓦片向上淡出动作(FadeOutUpTiles)
  • 9.9.17 瓦片向下淡出动作(FadeOutDownTiles)
  • 9.9.18 关闭瓦片动作(TurnOffTiles)
  • 9.9.19 3D波浪瓦片动作(WavesTiles3D)
  • 9.9.20 3D跳跃瓦片动作(JumpTiles3D)
  • 9.9.21 拆分行动作(SplitRows)
  • 9.9.22 拆分列动作(SplitCols)
  • 9.9.23 3D翻页动作(PageTurn3D)
  • 9.10 其他动作
  • 9.10.1 绑定节点和动作(TargetedAction)
  • 9.10.2 扭曲动作(SkewBy和SkewTo)
  • 9.10.3 轨道照相机动作(OrbitCamera)
  • 9.10.4 延迟运行动作(DelayTime)
  • 9.11 小结
  • 第10章 调度器、绘图API与动画
  • 10.1 调度器(Scheduler)
  • 10.1.1 update定时器调度
  • 10.1.2 设置update定时器的优先级
  • 10.1.3 自定义调度器
  • 10.1.4 停止调度器
  • 10.2 绘图API
  • 10.3 动画
  • 10.3.1 基于绘图API与调度器的动画
  • 10.3.2 帧(Frame)动画
  • 10.4 小结
  • 第11章 数据存储技术
  • 11.1 使用UserDefault读写Key-Value类型的数据
  • 11.2 读写流文件
  • 11.3 操作XML文件
  • 11.3.1 使用tinyxml2生成XML文件
  • 11.3.2 使用tinyxml2以DOM方式读取XML文件
  • 11.3.3 使用SAXParser以SAX方式读取XML文件
  • 11.4 使用rapidjson读写JSON文件
  • 11.5 使用SQLite数据库
  • 11.6 小结
  • 第12章 Sprite3D技术
  • 12.1 什么是Sprite3D
  • 12.2 Cocos2d-x支持哪些3D模型格式
  • 12.3 装载obj格式的3D模型文件
  • 12.4 装载和使用c3t和c3b格式的3D模型文件
  • 12.4.1 使用fbx-conv将fbx转换为c3t和c3b格式
  • 12.4.2 旋转的3D怪物
  • 12.4.3 游泳的海龟
  • 12.5 小结
  • 第13章 Cocos2d-x中的瓦片和地图
  • 13.1 瓦片和地图编辑器
  • 13.1.1 瓦片地图的种类和用途
  • 13.1.2 瓦片地图编辑器(Tiled Map Editor)
  • 13.1.3 用Tiled编辑地图
  • 13.2 在Cocos2d-x中使用地图
  • 13.2.1 在程序中显示地图
  • 13.2.2 隐藏和显示图层
  • 13.2.3 编辑图块
  • 13.2.4 获取图块的属性值
  • 13.2.5 在地图中添加精灵
  • 13.2.6 让精灵只在道路上移动
  • 13.2.7 改变遮挡关系(zOrder和PositionZ)
  • 13.2.8 拖动地图
  • 13.2.9 在45度角地图上种树
  • 13.2.10 使用对象层
  • 13.3 小结
  • 第14章 粒子系统
  • 14.1 Cocos2d-x内置的标准粒子特效
  • 14.1.1 群星闪烁
  • 14.1.2 幽灵鬼火
  • 14.1.3 群星爆炸
  • 14.2 粒子特效属性详解
  • 14.3 自定义粒子特效
  • 14.3.1 五彩旋转戒指
  • 14.3.2 放大版的群星闪烁
  • 14.4 可视化粒子特效设计器
  • 14.4.1 Particle Designer (仅适用于OS X)
  • 14.4.2 Particle Editor (只适用于Windows系统)
  • 14.5 通过plist文件实现粒子特效
  • 14.5.1 彗星特效
  • 14.5.2 用plist文件实现放大版的群星闪烁
  • 14.6 燃烧的圣火
  • 14.7 小结
  • 第15章 物理引擎
  • 15.1 物理引擎概述
  • 15.1.1 什么是物理引擎
  • 15.1.2 物理引擎在游戏中的地位
  • 15.1.3 Box2D和Chipmunk的对比
  • 15.2 Cocos2d-x 3.x中抽象封装的物理引擎
  • 15.2.1 抽象物理引擎概述
  • 15.2.2 使用抽象物理引擎创建Body (刚体)
  • 15.3 Android平台如何使用物理引擎
  • 15.4 改变Android和iOS平台默认的物理引擎
  • 15.5 碰撞检测
  • 15.6 只撞击一侧边缘的碰撞检测
  • 15.7 足球撞击特效
  • 15.8 骷髅堆中的足球
  • 15.9 用重力感应控制的足球
  • 15.10 小结
  • 第16章 骨骼动画
  • 16.1 骨骼动画概述
  • 16.2 骨骼动画的优势
  • 16.3 Spine骨骼动画
  • 16.3.1 Spine骨骼动画简介
  • 16.3.2 在Cocos2d-x中使用Spine骨骼动画
  • 16.3.3 Spine简介
  • 16.3.4 用Spine导入骨骼动画图像资源
  • 16.3.5 完成图像的摆放
  • 16.3.6 绑定骨骼
  • 16.3.7 在骨骼上旋转图像
  • 16.3.8 设计骨骼动画
  • 16.4 Armature骨骼动画
  • 16.4.1 安装和运行Cocos Studio
  • 16.4.2 将图像导入工程
  • 16.4.3 使用图像资源
  • 16.4.4 创建骨骼
  • 16.4.5 绑定骨骼和图像
  • 16.4.6 设计骨骼动画
  • 16.4.7 导出骨骼动画
  • 16.4.8 在Cocos2d-x中使用骨骼动画
  • 16.5 小结
  • 第17章 Objective-C、Swift、C++和Java交互
  • 17.1 C++与Objective-C的交互
  • 17.1.1 C++调用Objective-C API
  • 17.1.2 通过Objective-C获取Web数据
  • 17.1.3 Objective-C调用C++ API
  • 17.1.4 .mm文件到底起什么作用
  • 17.2 C++调用Swift API
  • 17.2.1 创建Swift文件
  • 17.2.2 编写Swift类
  • 17.2.3 自动生成的头文件的位置和命名规则
  • 17.2.4 自动生成的头文件的内容
  • 17.2.5 自动生成头文件非得用@objc吗
  • 17.2.6 用Objective-C调用Swift API
  • 17.2.7 C++调用Swift API
  • 17.3 Swift调用Objective-C API
  • 17.3.1 在桥接头文件中引用Objective-C的头文件
  • 17.3.2 在Swift源代码文件中调用Objective API
  • 17.3.3 Objective-C调用Swift API
  • 17.3.4 声明和实现C++风格的方法
  • 17.3.5 C++调用Swift API
  • 17.4 Android平台多语言交互
  • 17.4.1 C++调用Java类的无参数静态方法
  • 17.4.2 C++调用有参数的静态Java方法
  • 17.4.3 C++调用Java类的非静态方法
  • 17.4.4 C++调用Java API向SQLite数据库中插入信息(获取Context对象)
  • 17.4.5 C++调用Java API查询SQLite数据库中的记录
  • 17.4.6 Java调用C++ API
  • 17.5 小结
  • 第18章 项目实战:星空大战
  • 18.1 游戏概述
  • 18.2 滚动背景
  • 18.2.1 滚动游戏背景
  • 18.2.2 让云彩在背景上移动
  • 18.3 创建战机
  • 18.3.1 创建战机类
  • 18.3.2 创建战机图层
  • 18.3.3 让战机移动
  • 18.3.4 为战机添加光子鱼雷武器
  • 18.3.5 为战机添加激光束武器
  • 18.3.6 为战机添加带有自动跟踪功能的导弹
  • 18.3.7 让战机发射武器
  • 18.4 创建敌机
  • 18.4.1 创建小敌机
  • 18.4.2 创建大敌机
  • 18.4.3 敌机发送炮弹
  • 18.5 小结
展开全部