Flash小游戏毕业论文.doc_第1页
Flash小游戏毕业论文.doc_第2页
Flash小游戏毕业论文.doc_第3页
Flash小游戏毕业论文.doc_第4页
Flash小游戏毕业论文.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXXXXXX学院毕业论文 Flash小游戏制作XXXXXXXXXXXXX学 院毕 业 论 文论文(设计)题目:Flash小游戏制作系别:xxxxxxxx专业:xxxxxxxx班级:xxxxxxxx学生姓名(学号):xxxxxxxx指导教师姓名:xxxxxxxx论文完成日期:xxxxxxxx摘要随着现代科技的高速发展,短短几十年,电脑游戏得到迅猛发展。电脑游戏充分利用多媒体网络优势,拓宽了传统游戏的界限,给人们带来全新的体验。在这些游戏中,Flash游戏以其好看的动画,绚丽的声光效果,高度的通畅性,以及很强的可玩性,而受到广大青少年的青睐。Flash软件由Macromedia公司推出,除了制作动画以外,还能实现交互功能。Flash是一种创作工具,设计人员和开发人员可使用它来创建演示文稿、应用程序和其它允许用户交互的内容。Flash 可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。它不仅能够制作出许多眩目多彩的效果,只要你肯赋予它一定的情景,它也会模拟出现实生活中的场景。通过Flash生成的动画文件非常小,可以很好的用在网页设计及更多的领域。Flash可以采用补间形状或补间动画等多种手段,产生很复杂的动画;同时,Flash不同于gif动画,它可以附加很复杂的控制代码,从而开发出很复杂的应用,比如一些小游戏。关键词:Flash 游戏 动画目录一、前言- 5 -二、Flash介绍- 5 -(一)Flash简介- 5 -(二)Flash的特点- 6 -1.Flash的特点- 6 -(三)Flash的应用领域- 6 -(四)Flash的发展方向- 7 -1.应用程序开发- 7 -2.软件系统界面开发- 7 -3.手机领域的开发- 7 -4.游戏开发- 8 -5.Web应用服务- 8 -6.站点建设- 8 -7.多媒体娱乐- 8 -8.教学系统- 8 -三、Flash游戏的制作过程- 9 -(一)界面设计- 9 -1.开始界面- 9 -2.游戏界面- 9 -3.帮助界面- 10 -(二)代码- 10 -1.部分主要控制代码- 10 -(1)定义变量- 10 -(2)开始游戏- 11 -开始游戏- 11 -在屏幕右下角创建保护盾图标- 12 -当飞机爆炸后,从屏幕左下角删除一个飞机图标- 12 -使用一次保护盾后,从屏幕右下角删除一个保护盾图标- 12 -删除所有飞机图标- 12 -删除所有保护盾图标- 12 -飞机炸毁后,生成新的飞机- 13 -(3)按方向键控制时- 13 -按下方向键控制时- 13 -放开方向控制键- 14 -按下方向控制键时,飞机移动的方向的范围的控制- 14 -(4)飞机碰撞后爆炸- 14 -(5)开启3秒的保护盾- 15 -(6)关闭保护盾- 15 -(7)创建四组石头- 15 -(8)激活所有岩石- 16 -(9)子弹击中石头后- 16 -(10)生成子弹- 17 -(11)子弹的移动- 17 -(12)当子弹击中石头后,删除子弹对象- 17 -(13)检测子弹是否与石头碰撞- 18 -(14)游戏结束,删除所有对象和监听器- 19 -2.片头开始游戏按钮代码- 19 -3.再玩一次按钮代码- 19 -4.帮助界面返回按钮代码- 19 -四、总结- 20 -五、参考文献- 21 -六、致谢- 22 -一、前言伴随着计算机的迅速普及,伴随着网络“触角”的迅速延伸,信息时代到来了!喜欢探索,充满幻想,渴望参与,这是人的天性。信息时代带给我们一个能够满足人类这种天性的礼物电脑小游戏。真实感、立体感、交互性强的游戏吸引着成千上万的人,很多人迷恋上了游戏,迷恋上了计算机,迷恋上了网络,迷恋上了Flash!电脑小游戏现在已成为社会上各界人士来放松自己,消遣时间的有效途径之一。就像前期在我们学生广为流传的植物大战僵尸,大部分学生在课余时间都在用这个游戏来充实自己的课余生活。小游戏和其它大型游戏的区别在于它不容易让玩家上瘾。玩家完全可以在业余时间来运用小游戏来放松自己和娱乐。作为一种大众娱乐方式,游戏已经越来越被人们所接受,尤其是在电脑游戏方面。面对当今社会上的种种压力,偶尔玩小游戏已是现在社会各界人士来放松自己,缓解自身压力的一种有效方法。特别是在射击方面的小游戏,游戏自身的激烈的战斗与玩游戏时候玩家的心态可以使玩家重新调整心态,从而又更好的心态去工作。鉴于上述问题的综合的考虑,也为了展示这三年来所学成果,我决定做基于Flash的射击类小游戏宇宙大作战。现在网络上流行的小游戏大多是运用Flash来制作的。Flash游戏是一种新兴起的游戏形式,以游戏简单,操作方便,绿色,无需安装,文件体积小等优点现在渐渐被广大网友喜爱。Flash游戏又叫Flash小游戏,因为Flash游戏主要应用于一些趣味化的、小型的游戏之上,以完全发挥它基于矢量图的优势。制作FLASH游戏需要用到ActionScript语言。利用ActionScript编程来控制场景的移动,飞机的属性和游戏中道具的作用等等。Flash是Macromedia公司的一个的网页交互动画制作工具。Flash是交互式矢量图和Web动画的标准。网页设计者使用Flash能创建漂亮的、可改变尺寸的、以及极其紧密的导航界面、技术说明以及其他奇特的效果。二、Flash介绍(一)Flash简介Flash的前身是Future Wave公司的Future Splash,是世界上第一个商用的二维矢量动画软件,用于设计和编辑Flash文档。1996年11月,美国Macromedia公司收购了Future Wave,并将其改名为Flash。在出到Flash 8以后,Macromedia又被Adobe公司收购。最新版本为:Adobe Flash CS5。(二)Flash的特点1.Flash的特点(1)它是基于矢量的图形系统,各元素都是矢量的,只要用少量向量数据就可以描述一个复杂的对象,占用的存储空间只是位图的几千分之一,非常适合在网络上使用。同时,矢量图像可以做到真正的无极放大。这样,无论用户的浏览器使用多大的窗口,图像始终可以完全显示,并且不回降低画面质量。(2)它使用插件方式工作。用户只要安装一次插件,以后就可以快速启动并观看动画,而不必像:Java那样每次都要启动虚拟机。由于Flash生成的动画一般都很小,所以,调用的时候速度很快。Flash plugin也不大,只有150KB左右,很容易下载并安装。(3)它还提供其他的一些增强功能。比如,支持位图、声音、渐变色、Alpha、透明等。拥有了这些功能,完全可以建立一个全部由Flash制作的站点。(4)这就是说,在观看一个大动画的时候,可以不必等到影片全部下载到本地再观看,而是随时可以观看,哪怕后面的内容没有完全下载到硬盘,也可以开始欣赏动画。(三)Flash的应用领域Flash技术不断推陈出新,继席卷网页设计、网络广告之后,电影、电视、卡通、声乐将是它下一步引领风骚的舞台。FLASH从网络走向电影、电视、卡通、声乐,推动了传统媒体和互联网媒体的融合。网页设计者开始利用网络技术为商业、音乐电视和电视节目工作。在网络电影领域,Flash技术自1997年由MACROMEDIA推出后,逐渐受到好莱坞制片公司的青睐,增加了微型电影和基于网络的电影制作,用它设计迷你电影与网络电影。在电视广告领域,NETZERO公司官员日前说,最近他们运用MACROMEDIA公司的Flash软件制作了即将在黄金时段播出的电视广告宣传片,这种方式为公司节省了210万美元的制作成本。在电视卡通剧领域,NELVANA的第一项新产品名叫WHEN QUADS WONT LEAVE,是世界上第一部完全由MACROMEDIA公司的FLASH软件制作的电视系列剧。Flash制作的节目可以同时在网络与电视台播出,一片两播,符合经济效益。半小时节目若用Flash技术制作,大约3至4个月就可杀青,若是其它技术,通常需要10-14个月。在音乐领域,FlashMV更好的提供了在唱片宣传上既保证质量又降低成本的有效途径,并且将成功的把传统的唱片宣传推广带到电脑网路的更大空间。在游戏领域,索尼公司也宣布它将把这项技术用于制作PlayStation 2的片头。此外由于它能够减少游戏软件中的电影片段所占数据容量,因此预计将为DVD游戏软件节省更多的空间。(四)Flash的发展方向Flash被称为是“最为灵活的前台”,由于其独特的时间片段分割(TimeLine)和重组(MC嵌套)技术,结合ActionScitp的对象和流程控制,使得在灵活的界面设计和动画设计成为可能,同时它也是最为小巧的前台。Flash具有跨平台的特性(这点和Java一样),所以无论你处于处于何种平台,只要你安装了支持的Flash Player,就可以保证它们的最终显示效果的一致,而不必像在以前的网页设计中那样为IE或NetSpace各设计一个版本。同Java一样,它有很强的可移植性。最新的Flash还具有的手机支持功能,可以让用户为自己的手机设计喜爱的功能。当然首先必需要有支持Flash的手机,同时它还可以应用于Pocket PC。那么,Flash可能的发展方向究竟如何?1.应用程序开发由于其独特的跨平台特性、灵活的界面控制以及多媒体特性的使用,使得用Flash制作的应用程序具有很强的生命力。在与用户的交流方面具有其它任何方式都无可比拟的优势。但目前的现状是:很少有人具有运用Flash进行应用程序开发这方面的经验。但这个难度会随着时间的推移而逐步减弱。2.软件系统界面开发Flash对于界面元素的可控性和它所表达的效果无疑具有很大的诱惑。对于一个软件系统的界面,Flash所具有的特性完全可以为用户提供一个良好的接口。3.手机领域的开发手机领域的开发将会对精确(像素级)的界面设计和CPU使用分布的操控能力有更高的要求,但同时也意味着更加更广泛的使用空间。4.游戏开发事实上,Flash中的游戏开发已经进行了多年的尝试。但至今为止仍然停留在中、小型游戏的开发上。游戏开发的很大一部份都受限于它的CPU能力和大量代码的管理。不过可喜的是,Flash Player 10运行时性能提高了很多;Actionscript 3.0的发布也使得程序更加容易维护和开发。5.Web应用服务其实很难界定Web应用服务的范围究竟有多大,它似乎它拥有无限的可能。随着网络的逐渐渗透,基于客户端-服务器的应用设计也开始逐渐受到欢迎,并且一度被誉为最具前景的方式。但是,这种方式开发者可能要花更多的时间在服务器后台处理能力和架构上,并且将它们与前台(Flash端)保持同步。6.站点建设事实上,现在只有极少数人掌握了使用Flash建立全Flash站点的技术。因为它意味着更高的界面维护能力和开发者整站架构能力。但它带来的好处也异常明显:全面的控制;无缝的导向跳转;更丰富的媒体内容;更体贴用户的流畅交互;跨平台和瘦客户端的支持;以及与其它Flash应用方案无缝连接集成等。7.多媒体娱乐其实,在这个方面无需再说什么。尽管它的发展速度没有像当初预言的那样迅速,但它仍然还在不断前进。Flash本身就以多媒体和可交互性而广为推崇。它所带来亲切氛围相信每一位用户都会喜欢。8.教学系统要在教学系统应用Flash现有的技术无疑会极大增强学生的主动性和积极发明的能力。在这方面涵盖的内容,可能所有现有技术你都可以用上了。根据你教学内容的不同你可能会选择不同的部份。Flash影片的后缀名为.swf,该类型文件必须有Flash播放器才能打开,但占用硬盘空间少,所以现在被广泛应用于游戏。我在其中选择的是“游戏开发”,因为游戏开发的难度更大,不只是图形元素和帧的设计,更包含了控制和算法的代码,对学习来说,更有锻炼能力的价值。三、Flash游戏的制作过程(一)界面设计1.开始界面2.游戏界面3.帮助界面(二)代码1.部分主要控制代码(1)定义变量var rockSpeedStart:Number = .03; /石头的初始速度var rockSpeedIncrease:Number = .02;/ 石头的速度增量var missileSpeed:Number = .2; /子弹的速度var shipRadius:Number = 20; var thrustPower:Number = .15; var startingShips:uint = 3; /初始化飞机数量var ship:Ship; /定义飞机var rocks:Array; /定义石头数组var missiles:Array; /定义子弹数组var lastTime:uint; /定义时间var rightArrow:Boolean = false; /定义右方向键数组var leftArrow:Boolean = false; /定义左方向键数组var upArrow:Boolean = false; /定义上方向键数组var downArrow:Boolean = false; /定义下方向键数组var shipMoveX:Number; / 定义飞机在X方向上的速度var shipMoveY:Number; / 定义飞机在Y方向上的速度var delayTimer:Timer;/当一架飞机爆炸后,在下一架飞机出现前所需的时间var shieldTimer:Timer; /保护盾持续的时间var gameMode:String; / 定义游戏模式var shieldOn:Boolean;/定义盾开启var shipsLeft:uint;var shieldsLeft:uint;var shipIcons:Array; /定义飞机数量数组var shieldIcons:Array; /定义保护盾数量数组var scoreDisplay:TextField; /定义分数文本var gameScore:Number; /定义游戏分数var gameLevel:uint; /定义游戏关数var gameObjects:Sprite; /定义游戏对象var scoreObjects:Sprite; /定义分数对象(2)开始游戏开始游戏function startSpaceRocks() gameObjects = new Sprite(); /实例化游戏对象addChild(gameObjects); scoreObjects = new Sprite();/实例化分数对象addChild(scoreObjects);gameLevel = 1; /重置分数对象 shipsLeft = startingShips;gameScore = 0;createShipIcons();createScoreDisplay();addEventListener(Event.ENTER_FRAME,moveGameObjects); /设置监听器stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);gameMode = delay;/ 游戏开始shieldOn = false;missiles = new Array();nextRockWave(null);newShip(null);在屏幕右下角创建保护盾图标function createShieldIcons() shieldIcons = new Array();/实例化保护盾数组for(var i:uint=0;i 0) removeShipIcon();删除所有保护盾图标function removeAllShieldIcons() while (shieldIcons.length 0) removeShieldIcon();飞机炸毁后,生成新的飞机function newShip(event:TimerEvent) if (ship != null) gameObjects.removeChild(ship); /若飞机已被实例化,则就不再实例化了ship = null;if (shipsLeft 1) /若飞机数量少于1则游戏结束 endGame();return; ship = new Ship(); /实例化一架飞机ship.gotoAndStop(1);/停留在作战飞机元件的第一帧ship.x = 370;ship.y = 450; /实例化后,飞机在屏幕上的位置 ship.shield.visible = false; /将作战飞机元件中的保护盾隐去。gameObjects.addChild(ship);shipMoveX = 0.0;shipMoveY = 0.0; /设置飞机速度gameMode = play; shieldsLeft = 3; (3)按方向键控制时按下方向键控制时function keyDownFunction(event:KeyboardEvent) if (event.keyCode = 37) leftArrow = true; else if (event.keyCode = 39) rightArrow = true; else if (event.keyCode = 38) upArrow = true;if (gameMode = play) ship.gotoAndStop(2); else if (event.keyCode = 32) / 按下space键,发射子弹newMissile(); else if (event.keyCode = 90) / 按下Z键,开启保护盾startShield(false); else if(event.keyCode = 40)downArrow = true;放开方向控制键function keyUpFunction(event:KeyboardEvent) if (event.keyCode = 37) leftArrow = false;else if (event.keyCode = 39) rightArrow = false; else if (event.keyCode = 38) upArrow = false;if (gameMode = play) ship.gotoAndStop(1);else if(event.keyCode = 40)downArrow = false;按下方向控制键时,飞机移动的方向的范围的控制function moveShip(timeDiff:uint) if (leftArrow) ship.x-=10;if (ship.x -20) ship.x = 720;if (upArrow) ship.y-=10;if (ship.y 720) ship.x = 0;if (downArrow) ship.y+=10;if (ship.y 520) ship.y = 0;(4)飞机碰撞后爆炸function shipHit() gameMode = delay;ship.gotoAndPlay(explode); /在作战飞机元件内,播放头跳向爆炸帧removeAllShieldIcons(); /删除所有保护盾图标delayTimer = new Timer(2000,1); /下一架飞机出现出延时2秒delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,newShip);delayTimer.start(); /延时计时开始removeShipIcon(); /删除一个飞机图标shipsLeft-; /飞机数量减少一个(5)开启3秒的保护盾function startShield(freeShield:Boolean) if (shieldsLeft =0;i-) / 石头移动速度等于石头初始速度+增量速度*游戏关数var rockSpeed:Number = rockSpeedStart + rockSpeedIncrease*gameLevel; rocksi.rock.x += rocksi.dx*timeDiff*rockSpeed; /石头位置rocksi.rock.y += rocksi.dy*timeDiff*rockSpeed;rocksi.rock.rotation += rocksi.dr*timeDiff*rockSpeed; / 设置石头的旋转/ 设置石头运动的范围,如果石头位置超过屏幕边界,则它又从屏幕的另一侧出现 if (rocksi.dx 0) & (rocksi.rock.x 720) rocksi.rock.x -= 720;if (rocksi.dx 0) & (rocksi.rock.x 0) & (rocksi.rock.y 520) rocksi.rock.y -= 540;if (rocksi.dy 0) & (rocksi.rock.y =0;i-) missilesi.x += missilesi.dx*missileSpeed*timeDiff; / 子弹运动missilesi.y += missilesi.dy*missileSpeed*timeDiff;/ 当子弹超出屏幕范围时,将子弹对象删除if (missilesi.x 700) | (missilesi.y 500) gameObjects.removeChild(missilesi);delete missilesi;missiles.splice(i,1);(12)当子弹击中石头后,删除子弹对象function missileHit(missileNum:uint) gameObjects.removeChild(missilesmissileNum);missiles.splice(missileNum,1);(13)检测子弹是否与石头碰撞function checkCollisions() rockloop: for(var j:int=rocks.length-1;j=0;j-) missileloop: for(var i:int=missiles.length-1;i=0;i-) / 如果石头和子弹的之间的距离小于石头的大小,则子弹击中石头if (Point.distance(new Point(rocksj.rock.x,rocksj.rock.y),new Point(missilesi.x,missilesi.y) rocksj.rockRadius) rockHit(j); /子弹击中石头时,调用碰撞函数和子弹碰撞函数missileHit(i);gameScore += 10; / 击中石头后,加分同时更新分数updateScore();continue rockloop; /继续检测碰撞if (gameMode = play) / 检测飞机是否与石头碰撞if (shieldOn = false) / 保护盾处于关闭状态if (Point.distance(new Point(rocksj.rock.x,rocksj.rock.y),new Point(ship.x,ship.y) rocksj.rockRadius+shipRadius) /当石头与飞机之间的距离小于石头与飞机直径大小之和时,发生这碰撞 shipHit();/ 碰撞后,调用飞机碰撞函数和石头碰撞函数rockHit(j);if (rocks.length = 0) & (gameMode = play) /如果当前屏幕中的石头被打完了,且游戏正在进行中 gameMode = betweenlevels;gameLevel+; / 进入下一关delayTimer = new Timer(2000,1);delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,nextRockWave);delayTimer.start();(14)游戏结束,删除所有对象和监听器function endGame() removeChild(gameObjects);removeChild(scoreObjects);gameObjects = null;scoreObjects = null;removeEventListener(Event.ENTER_FRAME,moveGameObjects);stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction);gotoAndStop(gameover);2.片头开始游戏按钮代码stop();startbtn.addEventListener(MouseEvent.CLICK,clickStart);function clickStart(event:MouseEvent) MovieClip(root).gotoAndStop(play);helpbtn.addEventListener(MouseEvent.CLICK,clickhe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论