闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚1第一章Flash游戏概述教学提要什么是FlashFlash的发展历程Flash的特点Flash与游戏ActionScript简介Flash游戏开发的一般过程重点与难点对Flash有个总体的认识,尤其是Flash的特点,要重点掌握。教学内容:一、什么是FlashFlash是基于矢量的动画制作软件。最初它仅被用于设计具有简单交互功能的矢量动画,但经过多年的发展,AdobeFlash已经集矢量绘图、动画制作、多媒体集成、人机交互、网络通信、数据处理等功能于一身。其面向对象的脚本语言ActionScript亦在发展中走向成熟,成为Flash互动程序的核心部分。在拥有强大功能的同时,Flash还能具有良好的网络特性和简单易用性等特点。这就难理解为何Flash成了网络互动多媒体的事实标准,成了在线游戏程序开发的首选平台。而且,随着网页游戏的兴起,以及手机作为多媒体娱乐终端的作用越来越被人们认识,Flash的应用还将被推向更广阔的领域。二、Flash的发展历程Flash的前身是FutureSplashAnimator,1996年被著名的Macromedia公司收购,改名为Flash,之后Flash得到了迅速的发展。早期Flash主要用于设计网页矢量动画,自2000年的Flash5.0开始,Flash完善了它的脚本语言ActionScript1.0,这给Flash注入了强大的扩展能力,Flash的应用从此得到一个质的飞跃。之后Flash的每次更版,都在编程能力上给广大的闪客带来不少的惊喜,Flash的应用也得到了爆炸式的发展。如今,在互联网、智能手机、其它各种嵌入式系统、电视媒体等等许多令域中都能看到Flash的身影,它是名副其实的网络时代的宠儿。2005年,Macromedia公司被Adobe公司收购,MacromediaFlash遂改名为AdobeFlash,目前最新版本为AdobeFlashCS3(Flash9)。FlashCS3使用功能更加强大的脚本语言:ActionScript3.0。下图为FlashCS3PROFESSIONAL的欢迎界面:FlashCS3中文版的欢迎界面一角Flash仍然在不断地发展着,预计08年会推出FlashCS4,它将内建3D引擎并提供IK骨骼系统支持,这真是一个激动人心的消息,就让我们拭目以待吧。闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚2经过多年的发展,Flash早已不是一个孤立的开发环境。它与Dreamweaver、Firework分工协作,被称为是网络三剑客,Maromedia被Adobe收购之后,Flash又实现了与Illustrator、Photoshop的无缝协作;它与AdobeDeviceCentral配合,开发手机Flash应用;它与其它集成开发环境配合,制作富应用程序(RichApplication),如QQ宠物和QQ游戏;与FlashMediaServer结合,可以开发网络应用程序,如基于Flash的视频会议系统;还可以用Flex,以纯XML描述文件和ActionScript动态生成.swf文件,从而在网络环境下,给用户以丰富的客户体验。三、Flash的特点Flash首先是一个功能强大的多媒体集成开发环境。大多数的位图、矢量图、音频、视频都能为Flash所用。让我们来看看Flash的“胃口”有多大,点击【文件】|【导入】|【导入到舞台】,弹出导入对话框。点击格式选择下拉框,会看一个长长的可导入的格式列表。其中常用的格式如下:格式名称简要说明jpg、gif、png、tif通用的位图格式,其中gif可以包含动画,png可以包含8位的透明通道。psdPhotoshop的文档格式。ai、fh、wmf常用的矢量图片格式。avi、mov、dvi、mpg、flv、3gp各种视频格式,其中flv为Flash标准的视频格式,3gp是用于移动设备的视频格式。wav、mp3常用的音频格式。flaFlash源文件。swfFlash的目标文件,导入时以逐帧的方式保留主时间轴动画。需要注意的是,并非所有Flash导入对话框列出的格式都可以被完美地导入到Flash中。因为这些格式往往都是其它公司自行开发的格式标准,这些文件的结构可能会根据每个公司自己的需要而有所改变,这是Flash所无法控制的。如果出现导入意外,则需要对素材进行一些处理。例如提示导入mp3失败,则可以通过专业的音频制作软件进行重新保存成能够导入的mp3编码方式,再行导入。如果导入某些矢量图格式出现与原图差异较大,则可以尝试用相关软件保存成低版本的矢量图格式再导入。如果想导入swf作品的完整动画与以及脚本,则可以尝试使用硕思闪客精灵(Sothink)对作品进行反编译,生成fla源文件之后再行导入。在多媒体集成的基础上,Flash提供了强大而简便的动画设计功能,如运动补间、遮罩。通过这些功能,可以实现各种神奇的动画效果。其次,Flash还是一个集成的编程开发环境。它拥有一套完整的、功能强大的面向对象脚本语言:ActionScript。我们甚至可以不使用任何素材,也不手工绘制任何图形,直接使用脚本也能创建美丽绝伦的动画特效,还可以使用Flash提供的大量的类、API和组件,以及自定义类、自定义组件,从而组建庞大的Flash应用程序。在动作面板中点击图标,则会看到Flash自带的所有类、API和组件,如下图所示:闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚3ActionScript3.0自带类包截图再次,Flash具有鲜明的网络特征。它的流行本身就得益于互联网的发展,文件小、播放器嵌入于各种浏览器中、跨各种操作系统平台、采用流媒体技术、本地文件存取限制等等,无不说明了Flash先天的网络特征。还有,Flash能很好地处理XML,尤其是ActionScript3.0,它包含以下E4X(ECMAScriptforXML规范)类:XML、XMLList、QName和Namespace。这使得Flash具有强大的格式化数据处理能力,以及与各种服务和应用进行数据交换的能力。Flash可以在嵌入式系统中应用。尤其在智能手机上,Flash得到了快速的应用,给用户以不同以往的掌上娱乐体验。FlashLite专门用来开发手机Flash应用,FlashLite的出现给J2ME产生了巨大的冲击。总之,强大的媒体兼容能力、矢量动画能力、面向对象程序设计语言、鲜明的网络特性、支持XML、强大的跨平台特性,每个功能都让Flash的魅力倍增。可以说,只有你想不到,没有Flash做不到,这句话毫不夸张。四、Flash与游戏Flash强大而简便的交互功能注定它自诞生开始就与游戏结缘。到目前为止,网络上流传的Flash游戏种类繁多数量不计其数。如棋类游戏、格斗游戏、冒险游戏、迷宫游戏等,几乎所有的街机游戏都有Flash版游戏,各种经典的小游戏也在Flash中被一次次翻版。但这并不意味着Flash什么游戏都能胜任。最大的问题是图形处理的速度瓶颈。为了达到跨平台的特性,Flash放弃了使用DirectX或者OpenGL等底层图形加速的机会。ActionScript3.0在这方面已经有了突破性的进展,据称其运行效率是ActionScript2.0的10倍。这无疑再次拓展了Flash游戏的领域,但到底能否“快”到足够好的程度,还有待实践检验。在未能打破速度瓶颈前,开发大中型的Flash游戏较需要特别关注采用各种速度优化策略的应用。Flash的另一个局限是不能随意存取本地硬盘数据,这是为了用户安全而做出的决定。作为折中方案,Flash提供共享对象(SharedObject)类用于在用户计算机上读取和存储有限的数据量。共享对象提供永久贮存在用户计算机上的对象之间的实时数据共享。本地共享对闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚4象与浏览器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是针对FlashPlayer运行时环境的编程语言,它在Flash内容和应用程序中实现了交互性、数据处理、网络通信以及其它许多功能。ActionScript代码是由FlashPlayer中的ActionScript虚拟机(AVM)来执行的。ActionScript代码通常被编译器编译成字节码格式(一种由计算机编写且能够为计算机所理解的编程语言),字节码嵌入swf文闽江学院教案校际选修课课程名称《Flash游戏编程》任课老师:肖刚5件中,swf文件由运行时环境FlashPlayer执行。依据运行环境和语法的不同,ActionScript可以分为以下几类:一)ActionScript3.0ActionScript3.0的推出,旨在方便创建拥有大型数据集和面向对象的可重用代码库的高度复杂的应用程序。ActionScript3.0严格遵循ECMAScript4规范和ECMAScriptforXML(E4X)规范。前者是目前大多数面向对象脚本语言例如JavaScript采用的规范,后者使得XML成为通用数据类型,大大地简化XML处理。遵循ECMAScript规范的语言具有相同的语法和核心语言功能。例如JavaScript与ActionScript的变量声明方式