1.2 注意事项
我想到两个对cocos2d开发者来说非常重要的问题,所以先在这里提一下。
1.2.1 Section 3.3.1
虽然“Section 3.3.1”这个名称听起来有点像是电影《星际旅行》里的某个秘密政府组织,但它实际上是苹果公司的开发者许可协议中的一个章节。随着iPhone SDK 4的发布,它已经成为某新条款的代名词。该条款或多或少地规定了开发者只可以使用 Objective-C、C、C++或JavaScript来进行开发。由于对iOS开发所使用的编程语言加以限制,该条款一经宣布便在iOS开发者中间引发了大量的讨论和担忧。
由于cocos2d完全是用Objective-C编写而成的,而且其使用的外部函数库,如Chipmunk和Box2D这两个物理引擎分别是用C和C++编写而成的,因此只要开发者是直接使用iPhone SDK提供的API,并且没有使用任何私有API,cocos2d的使用者就不需要为这个新条款感到担心。苹果公司官方不会因为Section 3.3.1而否定用cocos2d开发出的游戏和应用。
至于苹果公司官方为什么要设立条款来限制编程语言并且杜绝“中间层”,大家普遍认为这主要是为了防止用Adobe Flash开发出来的应用和游戏在iOS市场占据太大份额。
1.2.2 平台移植
也许你已经注意到了,很多开发平台上都有相应版本的cocos2d引擎,其中包括Windows和Android。这些cocos2d引擎名称相同,而且基本的开发原理也是一样的,但它们是由不同的作者用不同的编程语言开发出来的,与iPhone版的cocos2d其实没有关系。例如,Android版的cocos2d就是用Java编写的(Java是Android设备的本地编程语言)。
如果你对平台移植感兴趣,想把游戏移植到其他平台上,就必须了解这一点:不同版本的cocos2d游戏引擎有着非常显著的差异。比如说,要将一个用iPhone版cocos2d开发出的游戏移植到Android平台就不是一件易事。首先,存在一些编程语言上的障碍,也就是说所有的Objective-C代码必须用Java重写一遍。重写完以后,还需要把所有调用过的iPhone版cocos2d的API改成相应的Android版本,并且保证你的代码中不含有任何目标平台不支持的特性。另外,每个平台都可能有自己不同的bug、不同的技术限制和挑战。
总的来说,要将用cocos2d引擎编写的iOS游戏移植到其他含有cocos2d游戏引擎的平台上,所需要的工作量并不亚于把这个游戏在目标平台上用其他游戏引擎重写一遍。也就是说,并不存在一个平台转换器,可以让你轻轻一按就能万事大吉。不同平台上的cocos2d引擎唯一的相同之处仅在于名称和基本工作原理相同,仅此而已。
1.3 本书读者对象
我猜测你之所以挑选本书是因为它的书名吸引了你。也许你是想为iPhone或iPad开发2D游戏,并且选择了iPhone版cocos2d作为游戏引擎。或许你并不在乎选用什么游戏引擎,而仅仅是想为iOS设备开发2D游戏。又或许你使用cocos2d已有一段时间,现在想深入理解它。不管出于什么原因选择了本书,我保证你一定会有所收获!
1.4 阅读前提
几乎每本编程书籍都要求读者具备一些特定的知识,其中有些是必须知道的,还有些是有助于理解但不是必需的。本书也不例外。
1.4.1 编程经验
本书唯一的强制性要求就是你必须拥有一定程度的编程经验。你必须对一些编程概念,诸如循环、函数和类等有所理解。如果你以前编写过一些程序(要是使用过面向对象编程语言就更好了),那么阅读本书应该没有什么问题。
还准备往下读吗?好样的!
1.4.2 Objective-C
读到这里就说明你一定有一些编程经验,不过你可能并没有用Objective-C写过程序吧?我承认,知道它的人并不太多。
其实不懂Objective-C也能读这本书,但是如果你对这个语言的基础知识有所理解的话,看起本书来就会轻松一些。假如你对其他面向对象的编程语言,比如C++、C#或Java有所理解,也许你在读本书的过程中就能学会Objective-C。不过老实说,尽管我在学Objective-C之前有15年左右的编程经验,用过C++、C#以及各种各样的脚本语言,但是,要通过这本书弄清楚Objective-C对我来说还是很难。总会有一些细小却很麻烦的问题,让人一下子想不明白,于是你在看学习cocos2d的时候就很难集中注意力了。所以,最好手边常备一本Objective-C的参考书,不懂的时候可以随时翻阅。
我在学习Objective-C的时候,读的是由Mark Dalrymple和Scott Knaster写的、由Apress出版社出版的Learn Objective-C on the Mac一书。这本书真的是极其有用,如果你想学习Objective-C和Xcode的话,那么我向你倾情推荐这本书。
另外,苹果公司的官方文档Introduction to the Objective-C Programming Language也是一份非常有价值的在线参考手册。你可以到以下网址进行阅读:http://developer.apple.com/ mac/library/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html。
你可能觉得Objective-C有点吓人:代码中有很多方括号且内存管理方式复杂,另外iPhone上竟然没有垃圾回收机制!不必担心!
Objective-C就像一件新潮的衣裳,仅仅是外表有些另类。它的一些基本编程概念,如循环、类、继承和函数调用,还是和其他编程语言一样的。不过,Objective-C中的术语和其他语言是有差别的,比如说,Objective-C开发者所说的““消息发送””实质上就是指““方法调用””。至于内存管理,cocos2d已经为你尽量简化了这个过程,而且接下来我也将介绍一些比较基础、比较容易的规则,你以后可以遵循这些规则来进行开发。