如何学习cocos2d-x

摘要:
例如这个(不完整):1.3学习DEMO和熟悉开发平台编译cocos2d-x自带的TestCPP项目,全部跑一遍。当然,许多问题是针对cocos2d而非cocos2d-x的,不过用法相同,照看不误。这些经验在cocos2d-x中同样适用。同时,为了解决一些cocos2d-x没有提供的功能,你必须去学习相关的知识。例如这个:在cocos2d-x中使用libcurl实现上传文件功能。
如何学习cocos2d-x

本文转载自:http://www.zhihu.com/question/23008892/answer/24724927

1.1学习C++


C++ Primer 中文版(第 5 版) (豆瓣) 是不错的入门书籍,建议看第五版,学习期间建议画一些思维导图帮助理解和整理思路。例如这个(不完整):

如何学习cocos2d-x第1张

1.3 学习DEMO和熟悉开发平台

编译 cocos2d-x 自带的TestCPP项目,全部跑一遍。

熟悉 cocos2d-x API 的用法。

记得用doxygen 生成文档,建议每个API的功能都浏览一遍

文档有一个好处就是能更直观地显示继承关系

在学习DEMO的过程中,你必须熟悉自己开发平台的IDE,例如Windows上必须熟悉 Visual Studio,而OS X上必须熟悉xcode,Linux平台上就熟悉Eclipse+CDT吧。

1.4 了解引擎的文件夹结构

基于 cocos2d-x 源码生成的文档并不怎么详细,许多功能必须看源码。但这个阶段,我不建议纠结源码太深,倒是可以纠结一下cocos2d-x 的文件夹结构,看看各个类放在什么地方,找一找常见的哪些宏和常量以及枚举定义在什么地方,这花不了多少时间,但能让你对cocos2d-x有更深刻的了解,同时给你很强的成就感。这种成就感冲淡了你面对大量源码时候的无力感,让你能够继续前行。

如何学习cocos2d-x第2张

1.5 重复上面的第3步:再次学习DEMO

这时候看DEMO可能会轻松不少,但是你会有更多的问题去纠结。例如多分辨率支持?例如坐标系统?例如绘图功能?例如层级管理系统?例如事件传递系统?等等等等……这时候可以去Google(注意不要用百毒和其他搜索引擎)找文档看了。我推荐一些我看过的不错的文档和博客

许多博客都是极好的。红孩儿(后来加入了触控)写了许多源码分析,每一句源码都加了注释。虽然我不太认同他这种吃力不讨好的方法,但对于新手来说确实是有很大的帮助。

另外在 Stack Overflow 你能找到绝大部分问题的答案。当然,许多问题是针对 cocos2d 而非 cocos2d-x 的,不过用法相同,照看不误。许多优秀的文章都是基于 cocos2d 的,所以,不要介意,可以先花半天时间熟悉 OC 的语法,能看懂即可。

忘了广告了,我的博客(cocos2d-x | zrong's Blog)也有一些cocos2d-x内容,欢迎来喷。

1.6. 熟悉工具集

现在你应该对周边工具感兴趣了。例如帧动画使用什么制作?BMFont使用什么制作?骨骼动画呢?plist文件怎么编辑?碎图用什么工具拼合?有些项目上,你有许多选择,也可能没得选。去Google吧

二、 quick-cocos2d-x 部分
2.1 现在就到lua时间了

请认真读完 《Lua程序设计(第2版) 》 第一、二、三部分。第四部分可暂时不读。
1.2 熟悉 quick-cocos2d-x 的文件夹结构
相信有了上面 cocos2d-x 的基础,这个应该不难理解。
1.3 跑完 quick-cocos2d-x 自带的所有sample
在这期间,熟悉 framework 中的所有封装。可以参考 quick网站 quick wiki
1.4 学习导出API给Lua使用
导出 C/C++ API 给 Lua 使用
三、学习 OpenGL ES
熟悉Lua部分之后,作为一个有志于成为程序员的码农,依然要回到C/C++来,这里才是 cocos2d-x 的本质。
cocos2d-x 使用 OpenGL ES 进行渲染的,如果要对 cocos2d-x 的渲染层进行任何形式的扩展,你完全避不开 OpenGL ES。
既然逃不开,那就对TA说,请张开双腿,我要上。

3.1 阅读 OpenGL ES 2.0 Programming Guide

下面是这本书的官网,目前已经出了 OpenGL ES 3.0 版本,cocos2d-x 使用的是2.0。

http://www.opengles-book.com/es2/index.html

这本书写得浅显易懂,非常适合新手。有位网友花3个月时间翻译了中文版,但还是建议你不要看了。

这里是 OpenGL ES 的 官方文档 API中文翻译

当然,你也可以买那本著名的 OpenGL 红宝书 《OpenGL编程指南(原书第7版)》 来看,不过 OpenGL ES 相对与 OpenGL 来说还是有一些不同的,你要知道如何区分这些不同。

3.2 尝试理解 cocos2d-x 的渲染部分架构
相关的类我就不列出了,我正在酝酿一个这方面的系列文章准备发到博客上。如果写完了,我会在这里更新。
3.3 自己写一些滤镜、绘图功能的扩展
例如这个: cocos2d-x-filters
四、回归项目
到了这里,你可以开始你的项目了。虽然源码还没有读完,但相信整个架构都能理解了。在做项目的过程中,再去一点点读源码是比较快捷和我能够接受的方法,否则就太枯燥了。
你可以还需要选择一下cocos2d-x相关的工具。你可能听说过 CCB(cocosBuilder)和CCS(cocoStudio),尝试了解她们,再决定是否使用她们。
你已经有了AS3的基础,这样许多前端的概念和经验已经很丰富了。这些经验在cocos2d-x中同样适用。但是要注意的是,cocos2d-x不是AS3,不要试图用AS3的方法去使用cocos2d-x。

  • 有位码农在从C#转到AS3的时候向我抱怨:为什么Flash Builder没有Visual Studio的这个功能那个功能?
  • 然后这位码农在从AS3转到Sublime Text(用于Lua编辑)的时候向我抱怨,为什么Sublime Text没有Flash Builder的这个功能那个功能?

上面是个笑话。
同时,为了解决一些cocos2d-x没有提供的功能,你必须去学习相关的知识。例如这个:在 cocos2d-x 中使用 libcurl 实现上传文件功能(附quick-cocos2d-x封装)。不过你现在已经有了基础,学习这些不是难事。
在有时间的时候,可认真读一下上面提到的《Lua程序设计(第2版) 》第四部分,了解Lua和C语言通信的方式,顺便看看cocos2d-x里面是怎么实现的。
另外,一些你需要的引擎中没有的功能,也可以顺手实现了开源出来(例如这个:一个LuaSocket封装),说不定你需要的东西正好是别人也需要的。
五、熟悉发布平台
既然是做手游,Android和iOS平台是逃不掉了。
你要熟悉Android和iOS平台的特点,熟悉JAVA在Android上的应用,熟悉Objective-C在iOS上的应用,熟悉Eclipse ADT和XCode(上面应该已经熟悉过了)。
你还要熟悉Google Play和AppStore的发布流程以及方针、政策,内购的接入、SDK的嵌入。
你要学习和各个接入平台的程序员、商务、前台小妹打交道(因为经常会找不到你要找的真正的负责该SDK的技术人员),你要能忍受国内小平台糟糕的文档、代码规范和逆天的编程方法。
终、没有终点
上面说的并不完整,应该遗漏了不少东西,但我只能说这么多了。因为我的经验也止于此。
祝你成功!
======下面废话,不看也罢。
感觉你的导师对你还是很负责的,话说我多么希望我有一个这样的导师在刚刚入行的时候随口点拨我几句啊!!!
现在我有时也会给同事一些建议,但愿他们真的听懂了。

免责声明:文章转载自《如何学习cocos2d-x》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF做的小型音乐播放器升级版Ubuntu系统字体安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Cocos2d-x图片资源加密

http://cn.cocos2d-x.org/tutorial/show?id=2739 图片加密使用xxtea来加密,加密秘钥自己定,思路就是自己使用代码首先将图片加密,在程序中使用的时候,在加载图片资源处再将资源解密。 加密代码如下: 1、首先要加载头文件 2、将图片加密 booljiamiImg(stringinputFileName,strin...

Nodejs事件引擎libuv源码剖析之:高效线程池(threadpool)的实现

     声明:本文为原创博文,转载请注明出处。      Nodejs编程是全异步的,这就意味着我们不必每次都阻塞等待该次操作的结果,而事件完成(就绪)时会主动回调通知我们。在网络编程中,一般都是基于Reactor线程模型的变种,无论其怎么演化,其核心组件都包含了Reactor实例(提供事件注册、注销、通知功能)、多路复用器(由操作系统提供,比如kque...

31 讲带你搞懂 SkyWalking

课程背景 2019年4月,SkyWalking 这款国人开源的 APM 监控工具,正式从 Apache 基金会的孵化器毕业成为顶级项目。 如今 Skywalking 增长势头强劲,社区活跃,中文文档齐全,没有语言障碍,支持多语言探针。同时,还支持 Dubbo、gRPC、SOFARPC 等等框架。这些优点,让 Skywalking 的使用者越来越多,比如我们...

如何阅读mysql源码

  在微博上问mysql高手,如何阅读mysql 源码大致给了下面的一些建议: step 1,知道代码的组织结构(官方文档http://t.cn/z8LoLgh; Step2: 尝试大致了解一条sql涉及的上层接口 Step3:使用gdb单步调试 Step4 理解每个新版本mysql changelog的具体实现 以后深入关注mysql源码,今天以此为证。...

VS环境下用thrift-C/C++接口开发hbase应用

一、前言 用C/C++开发hbase应用,需要用到thrift接口。在windows平台使用Visual Studio时,要比在linux平台复杂一些,主要是因为一些依赖库无法做到自动安装(类似yum install或 apt-get install那样),其次是因为Linux本来就是hbase及其依赖库的原生平台。但总体而言,两个平台的过程大体相似。 开...

16.深入k8s:Informer使用及其源码分析

转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 由于这部分的代码是在client-go 中,所以使用的源码版本是client-go 1.19 这次讲解我用了很一些图,尽可能的把这个模块给描述清楚,如果感觉对你有所帮助不妨发一封邮件激励一下我~ Informer机制 机制设计 Inform...