第一章--Flash游戏概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章Flash游戏概述
教学提要
什么是Flash
Flash的发展历程
Flash的特点
Flash与游戏
ActionScript简介
Flash游戏开发的一般过程
重点与难点
对Flash有个总体的认识,尤其是Flash的特点,要重点掌握。
教学内容:
一、什么是Flash
Flash是基于矢量的动画制作软件。
最初它仅被用于设计具有简单交互功能的矢量动画,但经过多年的发展,Adobe Flash已经集矢量绘图、动画制作、多媒体集成、人机交互、网络通信、数据处理等功能于一身。
其面向对象的脚本语言ActionScript亦在发展中走向成熟,成为Flash互动程序的核心部分。
在拥有强大功能的同时,Flash还能具有良好的网络特性和简单易用性等特点。
这就难理解为何Flash成了网络互动多媒体的事实标准,成了在线游戏程序开发的首选平台。
而且,随着网页游戏的兴起,以及手机作为多媒体娱乐终端的作用越来越被人们认识,Flash的应用还将被推向更广阔的领域。
二、Flash的发展历程
Flash的前身是Future Splash Animator,1996年被著名的Macromedia公司收购,改名为Flash,之后Flash得到了迅速的发展。
早期Flash主要用于设计网页矢量动画,自2000年的Flash5.0开始,Flash完善了它的脚本语言ActionScript 1.0,这给Flash注入了强大的扩展能力,Flash的应用从此得到一个质的飞跃。
之后Flash的每次更版,都在编程能力上给广大的闪客带来不少的惊喜,Flash的应用也得到了爆炸式的发展。
如今,在互联网、智能手机、其它各种嵌入式系统、电视媒体等等许多令域中都能看到Flash的身影,它是名副其实的网络时代的宠儿。
2005年,Macromedia公司被Adobe公司收购,Macromedia Flash 遂改名为Adobe Flash,目前最新版本为Adobe Flash CS3(Flash 9)。
Flash CS3使用功能更加强大的脚本语言:ActionScript 3.0。
下图为Flash CS3 PROFESSIONAL的欢迎界面:
Flash CS3中文版的欢迎界面一角
Flash仍然在不断地发展着,预计08年会推出Flash CS4,它将内建3D引擎并提供IK 骨骼系统支持,这真是一个激动人心的消息,就让我们拭目以待吧。
经过多年的发展,Flash早已不是一个孤立的开发环境。
它与Dreamweaver、Firework分工协作,被称为是网络三剑客,Maromedia被Adobe收购之后,Flash又实现了与Illustrator、Photoshop的无缝协作;它与Adobe Device Central配合,开发手机Flash应用;它与其它集成开发环境配合,制作富应用程序(Rich Application),如QQ宠物和QQ游戏;与Flash Media Server结合,可以开发网络应用程序,如基于Flash的视频会议系统;还可以用Flex,以纯XML描述文件和ActionScript动态生成.swf文件,从而在网络环境下,给用户以丰富的客户体验。
三、Flash的特点
Flash首先是一个功能强大的多媒体集成开发环境。
大多数的位图、矢量图、音频、视频都能为Flash所用。
让我们来看看Flash的“胃口”有多大,点击【文件】|【导入】|【导入到舞台】,弹出导入对话框。
点击格式选择下拉框,会看一个长长的可导入的格式列表。
其中常用的格式如下:
格式名称简要说明
jpg、gif、png、tif通用的位图格式,其中gif可以包含动画,png可以包
含8位的透明通道。
psd Photoshop的文档格式。
ai、fh、wmf常用的矢量图片格式。
avi、mov、dvi、mpg、flv、3gp 各种视频格式,其中flv为Flash标准的视频格式,3gp是用于移动设备的视频格式。
wav、mp3常用的音频格式。
fla Flash源文件。
swf Flash的目标文件,导入时以逐帧的方式保留主时间轴
动画。
需要注意的是,并非所有Flash导入对话框列出的格式都可以被完美地导入到Flash 中。
因为这些格式往往都是其它公司自行开发的格式标准,这些文件的结构可能会根据每个公司自己的需要而有所改变,这是Flash所无法控制的。
如果出现导入意外,则需要对素材进行一些处理。
例如提示导入mp3失败,则可以通过专业的音频制作软件进行重新保存成能够导入的mp3编码方式,再行导入。
如果导入某些矢量图格式出现与原图差异较大,则可以尝试用相关软件保存成低版本的矢量图格式再导入。
如果想导入swf作品的完整动画与以及脚本,则可以尝试使用硕思闪客精灵(Sothink)对作品进行反编译,生成fla源文件之后再行导入。
在多媒体集成的基础上,Flash提供了强大而简便的动画设计功能,如运动补间、遮罩。
通过这些功能,可以实现各种神奇的动画效果。
其次,Flash还是一个集成的编程开发环境。
它拥有一套完整的、功能强大的面向对象脚本语言:ActionScript。
我们甚至可以不使用任何素材,也不手工绘制任何图形,直接使用脚本也能创建美丽绝伦的动画特效,还可以使用Flash提供的大量的类、API和组件,以及自定义类、自定义组件,从而组建庞大的Flash应用程序。
在动作面板中点击图标,则会看到Flash自带的所有类、API和组件,如下图所示:
ActionScript3.0自带类包截图
再次,Flash具有鲜明的网络特征。
它的流行本身就得益于互联网的发展,文件小、播放器嵌入于各种浏览器中、跨各种操作系统平台、采用流媒体技术、本地文件存取限制等等,无不说明了Flash先天的网络特征。
还有,Flash能很好地处理XML,尤其是ActionScript3.0,它包含以下 E4X(ECMAScript for XML规范)类:XML、XMLList、QName 和 Namespace。
这使得Flash具有强大的格式化数据处理能力,以及与各种服务和应用进行数据交换的能力。
Flash可以在嵌入式系统中应用。
尤其在智能手机上,Flash得到了快速的应用,给用户以不同以往的掌上娱乐体验。
Flash Lite专门用来开发手机Flash应用,Flash Lite的出现给J2ME产生了巨大的冲击。
总之,强大的媒体兼容能力、矢量动画能力、面向对象程序设计语言、鲜明的网络特性、支持XML、强大的跨平台特性,每个功能都让Flash的魅力倍增。
可以说,只有你想不到,没有Flash做不到,这句话毫不夸张。
四、Flash与游戏
Flash强大而简便的交互功能注定它自诞生开始就与游戏结缘。
到目前为止,网络上流传的Flash游戏种类繁多数量不计其数。
如棋类游戏、格斗游戏、冒险游戏、迷宫游戏等,几乎所有的街机游戏都有Flash版游戏,各种经典的小游戏也在Flash中被一次次翻版。
但这并不意味着Flash什么游戏都能胜任。
最大的问题是图形处理的速度瓶颈。
为了达到跨平台的特性,Flash放弃了使用DirectX或者OpenGL等底层图形加速的机会。
ActionScript 3.0在这方面已经有了突破性的进展,据称其运行效率是ActionScript2.0的10倍。
这无疑再次拓展了Flash游戏的领域,但到底能否“快”到足够好的程度,还有待实践检验。
在未能打破速度瓶颈前,开发大中型的Flash游戏较需要特别关注采用各种速度优化策略的应用。
Flash的另一个局限是不能随意存取本地硬盘数据,这是为了用户安全而做出的决定。
作为折中方案,Flash提供共享对象(SharedObject)类用于在用户计算机上读取和存储有限的数据量。
共享对象提供永久贮存在用户计算机上的对象之间的实时数据共享。
本地共享对象与浏览器 cookie 类似。
最后,Flash是基于二维平面的开发环境,虽然可以通过投影,将三维空间映射为二维平面,但毕竟大大增加了设计的复杂度和实时计算量。
到目前为止,仍然没有出现让人耳目一新的真三维Flash游戏,多数三维效果仍然通过特制的位图和精心的布置来模拟。
除此之外,Flash的魅力得以完美释放。
总的来说,Flash是设计中小游戏的最佳工具,同时具有潜力设计大型互动游戏的潜力。
无论你是出于个人爱好,还是大公司的商业运作,Flash都是一个很好的选择。
一般而言,了解别人用Flash做什么游戏可以给我们许多借鉴作用,可以让我们对Flash 游戏有更直观的了解,并且对其充满信心和期待。
就目前成功的应用来看,Flash可以轻松胜任这些类型的游戏开发任务:
◆单机益智游戏
几乎所有的经典小游戏都有Flash版。
不仅如此,Flash游戏设计者们还创作了数以万计的各种小游戏。
这些游戏被广泛应用在教育、娱乐、交流、广告等领域。
◆人机对战游戏
这种游戏带有人工智能。
游戏中的人工智能指计算机角色能够根据玩家角色的各种状态做出“聪明”的反应。
例如下棋、格斗,玩家总要想尽办法,才能战胜电脑,这激起了玩家挑战的欲望。
◆情景游戏
玩家通过选择情节走向来完成游戏任务。
情景游戏可以小到只是一张电子贺卡,也可以大到一个总长为40小时的角色扮演游戏。
这种游戏往往以画面精美和情节动人见长。
Flash足以发挥情景游戏的特点。
◆远程互动游戏
目前这方面的应用正在迅速增加,例如各种互动棋牌游戏。
这类游戏一般是结合其它开发环境共同完成,或者客户端用Flash开发而服务器端用其它编程语言开发。
◆手机游戏
这方面的应用目前也是炙手可热,随着智能手机越来越多,相信Flash在这方面将再次独领风骚。
总之,Flash游戏入门门槛低,成效快,是制作中小型游戏的最佳工具。
许多公司将Flash 的这个优势应用在了广告、教育、娱乐等方面。
也有许多编程爱好者通过Flash炫耀技术、展现个人创意等等。
虽然Flash游戏开发的入门门槛低,但是和任何艺术创作一样,要想制作精品游戏,还是需要下很大的功夫。
开发者或者开发团队必须并且在美工、动画、程序设计、市场策划、游戏策划等方面都有术业专攻的人才。
坚持不懈地学习,不断超越自我, Flash总会给我们带来成功的喜悦,我们也在一次次的成功中快乐地成为一个“闪林高手”。
本书的重点是讲解Flash游戏的技术核心――程序设计,并尽量囊括所有与程序设计有关的知识与经验。
而与程序设计无关的部分,则本着拿来主义的精神,只使用不展开,如读者有这些方面的不足,需要通过其它方式改进。
五、ActionScript简介
Flash强大功能的核心,就是ActionScript。
让我们先认识一下ActionScript吧。
ActionScript 是针对Flash Player 运行时环境的编程语言,它在 Flash 内容和应用程序中实现了交互性、数据处理、网络通信以及其它许多功能。
ActionScript 代码是由Flash Player 中的 ActionScript 虚拟机 (AVM) 来执行的。
ActionScript 代码通常被编译器编译成"字节码格式"(一种由计算机编写且能够为计算机所理解的编程语言),字节码嵌入swf文件中,swf文件由运行时环境 Flash Player 执行。
依据运行环境和语法的不同,ActionScript可以分为以下几类:
一) ActionScript3.0
ActionScript 3.0的推出,旨在方便创建拥有大型数据集和面向对象的可重用代码库的高度复杂的应用程序。
ActionScript3.0严格遵循ECMAScript 4规范和ECMAScript for XML (E4X)规范。
前者是目前大多数面向对象脚本语言例如JavaScript采用的规范,后者使得XML 成为通用数据类型,大大地简化XML 处理。
遵循ECMAScript规范的语言具有相同的语法和核心语言功能。
例如JavaScript与ActionScript的变量声明方式、结构语句和全局函数、全局类、全局变量,都是完全相同的。
具体的内容可以查看Flash帮助中的《ActionScript3.0语言与组件参考》中核心语言元素部分。
这种一致性让既有的JavaScript程序员轻松地适应ActionScript编程。
除此之外,ActionScript提供许多仅在Flash Player中使用的专用类。
所有的专用类被组织在34个类包中。
其中Flash 组件在 fl 包中,Flash Player API在 Flash 包中。
这些类包大大扩展了Flash的编程能力,使得组建一个庞大的Flash应用程序变得简单易行。
ActionScript3.0得到显著提高的部分表现在如下几个方面:
采用全新的字节码方式,Adobe宣称其执行效率约为ActionScript2.0的10倍。
能输出更多的更详细的错误信息。
ActionScript2.0测试程序时定位错误是一个难题,而ActionScript3.0则提供了一套更强大的错误处理机制。
将XML作为一个本机数据类型来处理。
与传统的 XML 分析 API 不同,使用 E4X 的 XML 就像该语言的本机数据类型一样执行。
E4X 通过大大减少所需代码的数量来简化操作XML 的应用程序的开发。
ActionScript 3.0 实现了对正则表达式的支持。
在ECMAScript 3(ECMA-262)中对正则表达式进行了定义,因此ActionScript 3.0 提供了对正则表达式的固有支持。
这使得开发者可以快速搜索并操作字符串。
提供了新基元类型:int 和 uint 类型。
ActionScript 2.0 拥有单一数值类型 Number,它是一种双精度浮点数。
int 类型是一个带符号的 32 位整数,它使 ActionScript 代码可充分利用 CPU 的快速处理整数数学运算的能力。
int 类型对使用整数的循环计数器和变量都非常有用。
uint 类型是无符号的 32 位整数类型,可用于 RGB 颜色值、字节计数和其它方面。
提供了对命名空间的支持,命名空间使用统一资源标识符 (URI) 以避免冲突,而且在使用 E4X 时还用于表示 XML 命名空间。
FlashPlayer9.0以上版本嵌入新的ActionScript虚拟机AVM2以支持ActionScript3.0。
为了向后兼容现有内容和旧内容,Flash Player 9同时还嵌入了AVM1。
二)ActionScript2.0/1.0
2.0是Flash Player7、Flash Player8所使用的脚本语言。
它是在ActionScript1.0的基础上发展起来的。
与ActionScript1.0相比,它大大增强了面向对象的程序设计方法,也具备XML操作功能。
但与ActionScript
3.0相比,它又是一个保留了许多面向过程语言元素的面向对象语言,属于过渡语言。
事实上,ActionScript2.0基于ECMAScript 4建议,但是并不完全遵循其规范,其XML操作则是通过扩展的XML类实现的。
ActionScript2.0的应用非常广泛,其面向对象和面向过程相结合的编程思想使其显得简单易用,比较合适开发小型的Flash应用程序。
目前大多数的游戏代码都是ActionScript2.0编写的,对于小型的快速应用,许多开发者仍然倾向于采用ActionScript2.0。
三)Flash Lite ActionScript
概括地讲,Flash Lite是专门用于为移动电话和消费电子设备进行开发的Flash技术。
Flash Lite2.x的推出,给J2ME造成了巨大的挑战。
两者都可以充分利用移动设备的计算能力而无需借助网络和服务器来完成商务、娱乐以及管理等功能。
J2ME在安全机制、存储能力和网络连接等方面占优势,而Flash Lite具有兼容性、界面设计、动画显示、服务器整合、开发入门门槛低等方面的先天优势。
由于两者各自的优缺点,移动设备应用程序开发领域,Flash Lite和J2ME将是既竞争又合作的关系。
Flash Lite ActionScript其实是由ActionScirpt的子集以及特定于移动开发的程序功能组成。
即与ActionScript相比,Flash Lite ActionScript根据移动设备的硬件资源和计算能力非常有限的特点,对ActionScript进行了一定的裁剪。
不同的移动设备支持的Flash Lite版本亦不相同,有些只支持Flash Lite 1.x ActionScript。
它是Flash Player4的ActionScript以及具有特定于 Flash Lite 属性命令的混合体。
而有些设备支持Flash Lite 2.x ActionScript,它支持 Flash Player 7 中的大多数(但并非所有)功能,以及特定于移动开发的功能。
例如,在 Flash Lite 2.x 中,可以加载 Flash Lite 本身不支持的特定于设备的媒体类型(图像、声音和视频)。
Flash Lite 2.x 还具有设备集成功能,如能够拨打电话和发送文本消息。
四)ActionScript版本的选择
对于PC上的Flash应用,可以在AS2和AS3之间作一个选择。
如果是一个简单的孤立的应用,并且读者已经比较熟悉AS2,那么完全可以使用AS2进行项目开发。
但是如果读者是开发一个大型的项目,并且这个项目的积累将被用于将来更多的项目,那么应该使用AS3进行项目开发。
对于项目来说,使用新版本的语言是大势所趋,对于开发者来说,使用新版本的语言是紧跟先进技术的基本要求。
总之,建议读者仅将AS2作为第二选项。
已有的AS2的代码,亦可以直接或者稍作修改在AS3中使用。
本书附录介绍了AS2与AS3语言之间的差异,读者可以参考这些差异,实现AS2和AS3之间的转换。
本书采用Flash CS3 Professional作为Flash游戏的开发环境,ActionScript以3.0为标准,手机游戏采用Flash Lite ActionScript2.0。
即便如此,本书还对AS2经典的事件模式单独讲解,以便读者更好地使用AS2,另外,虽然书本上仅给出AS3的代码实例,但是本书所附的光盘则附上了几乎所有游戏的AS2源代码,以便读者学习2.0版本的程序。
Flash CS3 Professional开发环境支持所有版本的ActionScript,在新建Flash文档时指定ActionScript的版本。
选择【文件】|【新建】,弹出“新建文档”对话框,如下图所示:
新建文档对话框
亦可在发布设置中修改这个设置。
选择【文件】|【发布设置】,在弹出的对话框中选择“Flash ”标签,会看到版本选择的下拉框,改选其选项即可修改Flash 文档的ActionScript 版本。
发布设置
六、Flash 游戏开发的一般过程
一个典型的游戏开发过程包括创意收集、情节设计、游戏设计文档、详细设计、美工与音效设计、程序设计、测试与发布等阶段。
流程图如下所示: 创意收集
情节设计
设计文档
其它设计测试
游戏发布详细设计
迭代
美工设计程序设计
典型的游戏开发过程
但是对于Flash 游戏来说,我们并不一定要严格遵循这样的开发流程,因为Flash 往往被用于开发小游戏,这些游戏工作量比较小,在现有的创作资源积累下,由一个人就可以完成。
这个时候,经验比文档更加实用。
此时,更合适的方法是根据个人的经验快速完成开发。
所以应该根据项目的复杂度选择合适的开发过程。
例如,对于许多小公司来说,因为希望以最快的速度进入Flash 游戏开发的领域,在前期以模仿为主,所以省去了开发流程的许多工作,游戏的开发流程大致为:
简化的游戏开发流程图
其中客户、程序员以及美工之间的沟通以及工作的规范化是项目开发成功与否的关键。
(注:可编辑下载,若有不当之处,请指正,谢谢!)。