失效链接处理 |
《Cocos2d-x游戏开发之旅》PDF 下载
转载自:https://download.csdn.net/download/seventouch/8114499
下载地址:版权归出版社和原作者所有,链接已删除,请购买正版
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍:《Cocos2d-x游戏开发之旅》
图书简介:
本书主要讲解了Cocos2d-x游戏图形引擎的使用方法,对常用的API使用方式以及重要的函数进行了深入的分析,并通过详细的游戏实例来介绍Cocos2d-x在实际开发中的应用,书中还大量穿插了在实际的手机游戏开发过程中遇到的问题以及解决方案。
相关截图:
图书目录:
第1章 开学典礼 / 1 1.1 出场人物介绍 / 1 1.2 入学要求——本书适合人群 / 2 1.3 这内容有点糟糕——本书风格 / 2 1.4 你需要这些技能——学Cocos2d-x需要什么知识 / 3 1.5 我们为什么要学Cocos2d-x / 4 1.6 先给我们的代码找个温馨的家——环境搭建 / 4 1.6.1 紫色风暴之VS2010 / 4 1.6.2 我的Cocos2d-x版本 / 5 1.6.3 看看前辈们的毕业设计——运行官方Demo / 6 1.7 广告时间——提供一些学习资源 / 8 第2章 不离不弃的HelloWorld / 10 2.1 简单到无法想象——直接运行HelloCpp项目 / 10 2.2 新建Cocos2d-x项目遇到的麻烦——成功新建一个HelloWorld / 12 2.2.1 创建Cocos2d-x项目 / 12 2.2.2 解决编译报错的方案1——直接复制源文件 / 14 2.2.3 解决编译报错的方案2——修改项目配置 / 17 2.3 HelloWorld,没有想象中的简单——简单解析HelloWorld / 19 2.3.1 HelloWorld是如何显示到窗口的 / 19 2.3.2 场景其实不是真正的场景 / 20 2.4 实例来了 / 23 第3章 我们来学习怎么爬行 / 29 3.1 环游世界——场景 / 29 3.2 一切的主宰——导演 / 30 3.2.1 加载第一个场景 / 30 3.2.2 简单的切换场景 / 30 3.2.3 包含特效的切换场景 / 32 3.2.4 赠送的——推进和弹出场景 / 34 3.3 你走你的,我走我的——层 / 36 3.4 比对象还要可爱的对象——精灵来了 / 37 3.5 我得下命令——菜单 / 38 3.6 当个背包客——节点 / 40 第4章 我们来学习怎么走路 / 43 4.1 吉他独奏《天空之城》——播放声音 / 43 4.2 控件篇1——我最爱的九妹和按钮事件 / 44 4.2.1 你好,九妹——可拉伸图片 / 44 4.2.2 解决使用extensions库时编译报错的问题 / 46 4.2.3 九妹和按钮搭配 / 48 4.2.4 丰富多彩的按钮事件 / 49 4.2.5 啰嗦一下——CCControlButton特别的小功能 / 51 4.3 控件篇2——我不是DJ之圆形音量按钮 / 51 4.3.1 圆形音量按钮 / 51 4.4 控件篇3——我要战斗之血量条 / 54 4.4.1 又是一个音量控制按钮 / 54 4.4.2 我要的血量条 / 55 4.5 动作篇1——简简单单的运动 / 56 4.5.1 你想去哪,你想走多远——CCMoveTo和CCMoveBy / 56 4.5.2 我要减肥——CCScaleTo和CCScaleBy / 58 4.5.3 卡牌翻转特效——用CCScaleTo就可以实现 / 61 4.5.4 闪亮登场——CCBlink / 62 4.6 动作讲解2——更复杂的运动 / 63 4.6.1 我要你按照我的路线走——CCBezierTo和CCBezierBy / 63 4.6.2 我没让你停,重复动作——CCRepeatForever / 66 4.6.3 动作一起做,一边走一边转一边跳——CCSequence / 67 4.7 动作讲解3——动作监听 / 69 4.7.1 小若,到家了告诉我一声——动作结束监听 / 69 4.7.2 动作家族族谱 / 70 4.8 屏幕触摸事件 / 72 4.8.1 屏幕事件初探 / 72 4.8.2 复数形式的函数——每个CCLayer都能获取屏幕事件 / 75 4.8.3 单数形式的函数——截断事件,一个CCLayer的垄断 / 77 第5章 是时候跑起来了——《LittleRunner》 / 80 5.1 这是一个什么游戏 / 80 5.2 找个主角回来——创建主角精灵 / 81 5.2.1 创建筛选器 / 81 5.2.2 创建实体基类 / 82 5.2.3 创建主角类 / 83 5.2.4 创建游戏场景 / 84 5.2.5 修改游戏窗口大小 / 87 5.3 其实她不想跑——创建无限滚动地图 / 87 5.3.1 每一帧都可以操作——scheduleUpdate初探 / 87 5.3.2 翻滚吧,地图——地图无限滚动 / 89 5.4 开心的时候——让主角跳起来 / 91 5.4.1 CCControlButton的应用——创建跳跃按钮 / 91 5.4.2 CCJumpBy的应用——给主角添加跳跃动作 / 93 5.5 金钱诱惑——加入怪物 / 95 5.5.1 怪物诞生 / 95 5.5.2 怪物巢穴——创建怪物管理器 / 97 5.5.3 贪婪的主角——怪物碰撞检测 / 99 5.5.4 疼了就退后——增加主角受伤时的动作 / 103 5.6 监控一切——创建分数标签、血量条等属性对象 / 105 第6章 精灵来了第二季 / 109 6.1 一大波精灵来袭——大量精灵单独绘制的缺陷 / 109 6.2 把相同的精灵装上车——使用CCSpriteBatchNode优化绘制 / 110 6.2.1 一次渲染——CCSpriteBatchNode的特别之处 / 110 6.2.2 什么是纹理——CCTexture简单解说 / 112 6.3 遇到不同的精灵怎么办——TexturePacker工具使用 / 114 6.3.1 同一张图片,同一个纹理 / 114 6.3.2 将多张图片打包到一起 / 115 6.3.3 加载打包后的图片 / 117 6.4 是动画,不是动作——CCAnimation / 118 6.4.1 用打包前的图片创建动画 / 118 6.4.2 用打包后的图片创建动画 / 121 6.4.3 额外赠送——动画创建辅助类 / 123 第7章 游戏实例之《跑跑跑》 / 127 7.1 更丰富的世界——使用Tiled地图 / 127 7.1.1 世界诞生——创建跑步场景 / 127 7.1.2 Tiled地图来了——使用Tiled Map Editor创建地图文件 / 129 7.1.3 你报错了吗——Tiled Editor常见路径错误 / 130 7.2 嘿,培养新人——创建新的主角 / 131 7.2.1 主角诞生——创建实体类和主角类 / 131 7.2.2 固定主角出生点——对象层的使用 / 134 7.2.3 让主角跑——添加主角动画 / 136 7.3 更智能的主角——添加角色控制器 / 137 7.3.1 创建控制器基类 / 137 7.3.2 带着它就能跑——主角移动控制器 / 138 7.3.3 焦点是主角——让地图随着主角滚动 / 141 7.4 更多的内容 / 144 7.4.1 让主角上下移动——三方移动控制器 / 144 7.4.2 添加障碍物——Tiled障碍层的使用 / 148 7.4.3 添加能吃的物品以及胜利条件 / 153 第8章 用多线程做定时器?你疯了——schedule很强大 / 158 8.1 我爱单线程——schedule介绍 / 158 8.2 每一帧都有我——scheduleUpdate和update / 158 8.3 定时器可以这么做——schedule和回调函数 / 160 8.3.1 不调用update函数,调用自己的函数 / 160 8.3.2 真正的定时器 / 162 8.4 让一切都停下来——unSchedule / 162 8.5 触发器可以这么做——scheduleOnce和回调函数 / 164 8.6 额外赠送,我总是很关注我暗恋的女孩——观察者模式 / 165 8.6.1 你喜欢谁?我帮你留意——观察者模式扫盲 / 165 8.6.2 Cocos2d-x提供的观察者模式工具类——CCNotificationCenter / 166 8.6.3 addObserver和postNotification函数传递数据的区别 / 170 8.6.4 额外赠送——自己实现简单的观察者 / 172 第9章 野外生存训练 / 177 9.1 师父走了,你怎么办——学会查看官方Demo / 177 9.2 迟早都要学会——学习查看Demo源代码 / 178 9.3 别忘了开源——学习查看Cocos2d-x源代码 / 179 9.3.1 为什么addObserver和postNotification不能同时传递数据 / 179 9.4 物竞天择,没用的就要被淘汰——retain和release / 183 9.4.1 为什么会有retain / 183 9.4.2 真正的凶手autoRelease / 183 9.4.3 看代码实际点 / 183 9.4.4 原理来了 / 186 9.4.5 实际情况 / 187 9.4.6 倒底什么时候要retain / 187 9.5 再传授几招 / 188 9.5.1 在调试项目时,跟踪并进入Cocos2d-x的源码 / 188 9.5.2 什么?你忘了保存记忆?我们一起十年了啊——保存数据 / 189 9.6 我能摆脱编译的噩梦——读取Csv配置文件 / 191 9.6.1 什么是Csv文件——Csv格式文件扫盲 / 191 9.6.2 如何创建一个Csv文件 / 192 9.6.3 预热——编写字符串工具类 / 193 9.6.4 辅助工具——编写文本读取工具类 / 196 9.6.5 进入主题——编写Csv文件读取工具类 / 197 第10章 睡觉的时候不要吃东西——有限状态机 / 205 10.1 花5分钟告诉你什么是有限状态机 / 205 10.1.1 简单认识 / 205 10.1.2 一个很“好玩”的游戏 / 205 10.1.3 实现简单有限状态机的类 / 206 10.2 状态模式之我很胖但我很强 / 209 10.2.1 什么是状态模式 / 209 10.2.2 用状态模式实现有限状态机 / 211 10.3 真正的状态机来了 / 216 10.3.1 创建状态机类 / 216 10.3.2 被释放的木头类 / 218 10.4 事件驱动,你想象不到的强大 / 221 10.4.1 彻底抛弃update函数——新的状态机类 / 221 10.4.2 更智能的状态类 / 224 10.4.3 见证新的运作情况 / 225 第11章 我比Csv更厉害——强大的Lua / 228 11.1 让Lua和C++牵手 / 228 11.1.1 Lua的堆栈和全局表 / 228 11.1.2 Lua和C++的第一次通信 / 228 11.2 Demo讲解之Lua和C++牵手 / 229 11.2.1 引入头文件 / 230 11.2.2 开始使用 / 231 11.2.3 执行Lua脚本 / 232 11.2.4 重置栈顶索引,将全局变量放到堆栈中 / 233 11.2.5 最后一步,C++取得字符串 / 233 11.3 简单解析Lua的堆栈 / 234 11.4 来点高难度的,获取Lua表结构的数据 / 235 11.4.1 什么是table / 235 11.4.2 获取table变量 / 236 11.4.3 lua_gettable函数 / 236 11.5 C++调用Lua函数 / 239 11.6 Lua调用C++的函数 / 240 第12章 额外奉献,状态机代码生成工具——SMC / 244 12.1 加快状态机开发速度——SMC是什么 / 244 12.2 永远都从HelloWorld开始 / 245 12.2.1 这是令牌——sm配置文件 / 245 12.2.2 化令牌为力量——使用Smc.jar将配置文件转换为代码 / 246 12.2.3 一劳永逸——更方便的代码转换方式 / 247 12.2.4 整装待发——导入所需文件到项目中 / 247 12.2.5 最后的最后——编写主体类 / 248 12.2.6 简单解析原理 / 249 12.3 实例之SMC版木头写代码 / 252 12.3.1 木头的逻辑 / 252 12.3.2 编写剧本——sm配置文件 / 253 12.3.3 主角诞生——编写Mutou主体类 / 255 12.3.4 导演开拍——编写触发状态切换的功能 / 259 第13章 自力更生——自己写一个UI模块 / 264 13.1 刚开始必须要轻松一下——UI模块思路简介 / 264 13.1.1 它能为我们做些什么——UI模块包含的功能 / 264 13.1.2 一览众山小——UI模块设计思路图 / 265 13.2 XML文件和属性模块 / 266 13.2.1 一切的源头——UI的XML配置文件 / 266 13.2.2 知识补充1——TinyXML介绍 / 268 13.2.3 知识补充2——TinyXML的HelloWorld / 268 13.2.4 知识补充3——用TinyXML读取UI模块的XML配置文件 / 272 13.2.5 封装,我们要记住封装——XML标签节点对象 / 276 13.2.6 我负责保存,你负责修饰——XML标签节点属性设置器 / 283 13.3 尝点甜头——创建控件 / 286 13.4 主角来了——组件 / 288 13.4.1 控件基类——MMBase / 289 13.4.2 普通窗口控件——MMNormalWin / 290 13.4.3 标签控件——MMLabel / 291 13.4.4 甜点来了——测试新的控件类 / 293 13.5 控件管理模块 / 296 13.5.1 我是老大——MMWinManager控件管理器 / 296 13.5.2 我是先锋——MMWinSystem控件系统 / 300 13.5.3 我是前台——MMWinDesktop控件顶层桌面 / 304 13.6 控件工厂 / 305 13.6.1 抽象工厂之MMWinBaseFactory / 305 13.6.2 控件工厂之MMWinFactory / 306 13.6.3 装饰工厂之MMWinProperityFactory / 307 13.6.4 最后的事情——运行项目 / 310 13.7 更完整的UI模块 / 311 第14章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(上篇) / 313 14.1 开篇——最后的游戏实例 / 313 14.1.1 为什么是塔防游戏 / 313 14.1.2 《卡牌塔防》功能简介——我们能学到哪些知识 / 313 14.2 启程——关卡编辑器 / 315 14.2.1 一个英雄一个坑——炮台坐标编辑器 / 315 14.2.2 按照我给的路径走——怪物坐标编辑器 / 335 14.2.3 添加更多方便的操作 / 343 14.3 磨刀不误砍柴工——预备知识 / 350 14.3.1 导演的助手——场景管理器 / 350 14.3.2 数据读取模块 / 353 14.3.3 全局参数 / 354 14.3.4 请说英文好吗?不,说中文——I18N工具类 / 356 14.3.5 导入UI模块和TinyXml模块 / 360 第15章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(下篇) / 363 15.1 英雄诞生 / 363 15.1.1 创建关卡场景 / 363 15.1.2 地图层 / 364 15.1.3 实体基类 / 367 15.1.4 英雄管理器1——炮台对象 / 370 15.1.5 英雄管理器2——英雄对象 / 375 15.1.6 英雄管理器3——炮台和英雄的关系 / 379 15.1.7 英雄管理器4——加入创建英雄的功能 / 380 15.2 怪物来袭 / 382 15.2.1 怪物管理器 / 382 15.2.2 移动控制器1——控制器基类 / 388 15.2.3 移动控制器2——移动控制器基类 / 389 15.2.4 移动控制器3——按指定坐标列表移动 / 391 15.2.5 怪物来了 / 395 15.3 英雄进攻 / 399 15.3.1 英雄的一次攻击流程 / 399 15.3.2 在Hero里获取怪物列表 / 400 15.3.3 查找并锁定攻击目标 / 403 15.3.4 英雄的攻击 / 404 15.3.5 子弹管理器1——子弹类 / 407 15.3.6 子弹管理器2——子弹管理器 / 410 15.3.7 子弹管理器3——英雄开始发射子弹 / 414 15.4 华丽的装饰 / 415 15.4.1 怪物血量条 / 415 15.4.2 炮台操作按钮——英雄华丽升级 / 419 15.4.3 怪物起点和终点魔法台 / 423 第16章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(终结篇) / 427 16.1 关卡信息UI / 427 16.1.1 利用自定义UI模块制作关卡信息面板 / 427 16.1.2 关卡信息数据刷新——CCNotificationCenter的应用 / 432 16.1.3 怪物数量刷新 / 437 16.1.4 怪物安息——怪物死亡后塔魂数量刷新 / 438 16.1.5 堡垒安息——怪物到达堡垒后扣除魔力值 / 439 16.1.6 打怪升级——英雄升级扣除塔魂 / 443 16.2 谢幕 / 444 16.2.1 关卡选择——根据关卡数加载游戏 / 445 16.2.2 胜利条件判断 / 448 16.2.3 失败条件判断 / 452 16.3 移植游戏到Android平台 / 452 16.3.1 傻瓜式的Android环境搭建1——准备工作 / 453 16.3.2 傻瓜式的Android环境搭建2——解压和安装 / 454 16.3.3 傻瓜式的Android环境搭建3——测试一下吧 / 457 16.3.4 不需要Cygwin——生成并导入Android项目 / 458 16.3.5 怎么编译C++文件——创建Builder / 459 16.3.6 开始编译——Android.mk文件 / 464 第17章 额外的一些东西 / 468 17.1 常见错误及解决方案 / 468 17.1.1 调用可变参数函数时,总是莫名报错 / 468 17.1.2 无法解析的外部符号(或命令) / 468 17.1.3 Android移植编译报错——undefined reference to / 469 17.1.4 使用了TinyXML后,移植到Android中运行报错 / 469 17.1.5 CCLabelTTF变成了一个黑块——多线程引起的Bug / 470 17.2 最后的内容 / 470 17.2.1 不管游戏多快,一帧就是一帧,我们能做很多事情 / 470 17.2.2 给读者的惊喜——丁小若寄语 / 471 17.2.3 请提供你的意见以及你发现的Bug / 471 |