《Cocos2D-x权威指南》——导读


前言


为什么要写这本书
在大学期间,我开始对移动游戏开发感兴趣,于是开始学习移动开发方面的相关知识,包括J2ME和Android等技术。现在,开始的好奇心和兴趣成就了我引以为豪的事业。在大四的时候,我到了天津猛犸实习,从J2ME平台到Android平台,从Android平台到iOS平台,我不仅接触了不同平台的开发,更学会了游戏开发的技巧和思想。如果说编程是一门艺术,那么游戏开发就是艺术中的艺术。作为一名游戏开发程序员,不仅要拥有熟练的编程技巧,还要对美术、策划和游戏有深入的理解。游戏程序员最重要的是游戏编程思想,因此当决定写这本书的时候,我深知不仅要分享Cocos2D-x相关的知识,更要分享游戏开发思想。
作为从J2ME手机游戏时代走过来的开发者,我深知移动平台游戏可移植性的重要。J2ME这项技术的学习相对简单,应用这项技术进行开发的速度也比较快,而且当时几乎所有手机平台都支持Java,所以“一次编码,到处运行”也就不是梦想了。但是由于受机型的硬件性能所限,不同的平台在移植上也需要下一番工夫,针对不同屏幕、不同内存,往往需要开发不同的版本。当时的开发者根据经验,往往把很多种机型分组处理,为每组开发一个模板,然后再针对在不同机型上的运行情况做不同的调整,从而形成一种相对高效的开发模式。尽管在这个阶段手机设备的硬件水平普遍偏低,但是开发者经常可以通过美术、程序、策划三方的配合,开发出具有非常好的效果的游戏。由于J2ME的学习和开发都很简单,因此很少有成型的引擎,只是不同的游戏对应不同的框架。
随着苹果iOS系统和iPhone、iPad等一系列产品的发布,随着Android系统和相应设备的诞生,移动平台的种类得到了丰富,并从单一的手机发展到平板电脑等多种手持设备上。而移动游戏的开发方式同样也有了改变,开发者们开始尝试针对不同平台的开发框架来进行开发。智能平台的硬件及性能的提高并没有带来游戏品质的提高,于是开发者们也探索着进行只针对单一平台的开发,他们利用平台特性(多点触屏,重力感应等)开发出了很多不错的游戏。虽然Android平台的屏幕及分辨率也是千差万别,但是由于出色的框架使得开发和移植变得简单起来,同时也不需要过多考虑内存的限制。但是问题依然存在,对于不同的智能平台(Android、iOS等操作系统)依然需要编写不同的代码来进行开发,如何跨平台这个问题摆在了开发者面前 。
跨平台的引擎有基于HTML5的跨平台特性产生的开发引擎,也有基于OpenGL开发的游戏引擎,其中Cocos2D-x广泛受到开发者的关注,因为它不仅具有跨平台的特点,还具有受Cocos2D全球社区的支持、框架简单易学、十分容易上手等特点。经过一段时间的发展,开发者使用Cocos2D-x开发出了多款成功的游戏,包括捕鱼达人、地铁总动员等佳作。2012年年初,Cocos2D-x团队再次开发出两个分支,分别是支持Windows Phone的XNA版和支持HTML5的HTML5版,后者还得到了Google的赞助。在Zynga的帮助下,Cocos2D-x正在研发绑定JavaScript的Cocos2D-x2.0版本。随着Cocos2D及其分支的发展,Cocos2D会有更多跨平台特性,从而可以支持更多的平台,并且提高开发者的开发效率。相信Cocos2D-x将会更加受到广大开发者的欢迎。
正因为这样,2011年年底我开始接触Cocos2D-x引擎,并在我的CSDN博客上写了一些相关的文章,当初的目的就是为自学留下些笔记以供以后参考,因为当时的Cocos2D-x参考资料还不是很多。后来逐渐发展为把我学习中遇到的问题与大家分享。慢慢地,通过使用,我发现Cocos2D-x是一个对开发者十分友好的游戏引擎,于是我希望把自己引擎的使用经验结合游戏开发经验更系统、更全面的分享出来,于是就有了这本书。

目录

第1章 认识Cocos2D-x
1.1 什么是Cocos2D
1.2 什么是Cocos2D-x
1.3 Cocos2D-x与Cocos2D-iPhone的比较
1.4 本章小结
第2章 搭建跨平台的开发环境
2.1 Windows下的开发环境配置
2.2 Android下的开发环境配置
2.3 iOS下的开发环境配置
2.4 使用Doxygen工具生成Cocos2D-x文档
2.5 本章小结
第3章 Cocos2D-x中的核心类
3.1 节点类
3.2 导演类
3.3 场景类
3.4 布景层类
3.5 精灵类
3.6 摄像机类
3.7 容器类
3.8 拖动渐隐效果类CCMotionStreak
3.9 绘制图形
3.10 时间调度
3.11 本章小结

时间: 2024-12-03 11:47:07

《Cocos2D-x权威指南》——导读的相关文章

《深入理解Scala》——第1章,第1.2节当函数式编程遇见面向对象

1.2 当函数式编程遇见面向对象 深入理解Scala 函数式编程和面向对象编程是软件开发的两种不同途径.函数式编程并非什么新概念,在现代开发者的开发工具箱里也绝非是什么天外来客.我们将通过Java生态圈里的例子来展示这一点,主要来看Spring Application framework和Google Collections库.这两个库都在Java的面向对象基础上融合了函数式的概念,而如果我们把它们翻译成Scala,则会优雅得多.在深入之前,我们需要先理解面向对象编程和函数式编程这两个术语的含义

《深入理解Scala》——第1章,第1.4节与JVM的无缝集成

1.4 与JVM的无缝集成 深入理解Scala Scala的吸引力之一在于它与Java和JVM的无缝集成.Scala与Java有很强的兼容性,比如说Java类可以直接映射为Scala类.这种紧密联系使Java到Scala的迁移相当简单,但在使用Scala的一些高级特性时还是需要小心的,Scala有些高级特性是Java里没有的.在Scala语言设计时已经小心地考虑了与Java无缝交互的问题,用Java写的库,大部分可以直接照搬(as-is)到Scala里. 1.4.1 Scala调用Java 从S

《深入理解Scala》——第2章,第2.1节学习使用Scala交互模式(REPL)

第2章 核心规则深入理解Scala 本章包括的内容: • 使用Scala交互模式(Read Eval Print Loop 简称REPL) • 面向表达式编程 • 不变性(Immutability) • Option类 本章内容覆盖了每个新Scala开发者都需要知道的几个主题.本章不会深入到每个主题里,但是会讲到可以让你自己去接着探索的程度.你将学会使用REPL,学会如何利用这个工具做软件的快速原型开发.然后我们会学到面向表达式编程,并从另一个视角来看控制结构是怎么回事.在此基础上,我们来研究不

《深入理解Scala》——第1章,第1.3节静态类型和表达力

1.3 静态类型和表达力 深入理解Scala 开发人员中有一个误解,认为静态类型必然导致冗长的代码.之所以如此是因为很多继承自C的语言强制要求程序员必须在代码中多处明确地指定类型.随着软件开发技术和编译器理论的发展,情况已经改变.Scala利用了其中一些技术进步来减少样板(boilerplate)代码,保持代码简洁. Scala做了以下几个简单的设计决策,以提高代码表达力. • 把类型标注(type annotation)换到变量右边. • 类型推断. • 可扩展的语法. • 用户自定义的隐式转

《深入理解Scala》——第1章,第1.5节总结

1.5 总结 深入理解Scala 本章中,你学到了一些Scala的设计理念.设计Scala的初衷在于把不同语言中的多种概念融合起来.Scala融合了函数式和面向对象编程,尽管显然Java也已经这么做了.Scala精选其语法,极大地减少了语言中的繁冗之处,使一些强大的特性可以优雅地表达,比如类型推断.最后,Scala和Java能够紧密集成,而且运行在Java虚拟机上,这或许是让Scala变成一种实用选择的最重要的一点.几乎不花代价就可以把Scala用于我们的日常工作中. 因为Scala融合了多种概

《深入理解Scala》——第1章,第1.1节Scala一种混合式编程语言

第1章 Scala--一种混合式编程语言 Scala是一种将其他编程语言中的多种技巧融合为一的语言.Scala尝试跨越多种不同类型的语言,给开发者提供面向对象编程.函数式编程.富有表达力的语法.静态强类型和丰富的泛型等特性,而且全部架设于Java虚拟机之上.因此开发者使用Scala时可以继续使用原本熟悉的某种编程特性,但要发挥Scala的强大能力则需要结合使用这些有时候相互抵触的概念和特性,建立一种平衡的和谐.Scala对开发者的真正解放之处在于让开发者可以随意使用最适合手头上的问题的编程范式.

《深入理解Scala》——第2章,第2.2节优先采用面向表达式编程

2.2 优先采用面向表达式编程 深入理解Scala 面向表达式编程是个术语,意思是在代码中使用表达式而不用语句.表达式和语句的区别是什么?语句是可以执行的东西,表达式是可以求值的东西.在实践中这有什么意义呢?表达式返回值,语句执行代码,但是不返回值.本节我们将学习面向表达式编程的全部知识,并理解它对简化程序有什么帮助.我们也会看一下对象的可变性,以及可变性与面向表达式编程的关系. 作者注:语句VS表达式 语句是可以执行的东西,表达式是可以求值的东西. 表达式是运算结果为一个值的代码块.Scala

《深入理解Scala》——第2章,第2.3节优先选择不变性

2.3 优先选择不变性 深入理解Scala 编程中的不变性指对象一旦创建后就不再改变状态.这是函数式编程的基石之一,也是JVM上的面向对象编程的推荐实践之一.Scala也不例外,在设计上优先选择不变性,在很多场景中把不变性作为默认设置.对此,你可能一下子会不适应.本节中,我们将学到不变性对于判等问题和并发编程能提供什么帮助. Scala里首先要明白的是不变对象和不变引用(immutable referene)的区别.Scala里的所有变量都是指向对象的引用.把变量声明为val意味着它是个不变"引

《深入理解Scala》——第2章,第2.4节用None不用null

2.4 用None不用null深入理解Scala Scala在标准库里提供了scala.Option类,鼓励大家在一般编程时尽量不要使用null.Option可以视作一个容器,里面要么有东西,要么什么都没有.Option通过两个子类来实现此含义:Some和None.Some表示容器里有且仅有一个东西,None表示空容器,有点类似List的Nil的含义. 在Java和其他允许null的语言里,null经常作为一个占位符用于返回值,表示非致命的错误,或者表示一个变量未被初始化.Scala里,你可以用

《深入理解Scala》——第2章,第2.5节多态场景下的判等

2.5 多态场景下的判等 深入理解Scala 众所周知,为多态的面向对象系统定义合适的判等和散列方法是个特别难的过程.这是因为子类可能在整个过程中造成一些相当怪异的问题,尤其是当类型层次上有多个实体(concrete)级别的时候.一般来说,对于需要比引用判等更强的判等(译者注:比如需要判断对象内部数据)的类,最好避免多层实体类层次.这是什么意思呢?有些时候类只需要引用判等就够了.也就是说只要两个对象不是同一个实例就判为不等.但是如果我们需要判断两个不同实例是否相等,而且又有多层实体类层次(mul