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