flash课程设计.docx_第1页
flash课程设计.docx_第2页
flash课程设计.docx_第3页
flash课程设计.docx_第4页
flash课程设计.docx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

课程设计评分表班级电专0803分组编号1组长题目Flash动画制作与创意组员及分工小组成绩(50%)小组成绩开发过程科学,能熟练运用所学的基本知识和基本技能解决相关问题,符合软件开发流程。(10分)文档层次清晰,正确、完整,技术用语准确,格式符合规范要求。(10分)软件功能达到设计要求,能正确、稳定运行,界面美观大方,链接流畅。(8分)团队具有分工、合作精神,具体表现为组长的领导能力,组员的合作精神,组员之间沟通交流情况。(8分)课程设计过程管理文档完整详实,能明确体现设计进展情况,每位组员的工作情况(4分)是否按时提交(5分)各种必须提交文档(打印文档和电子文档)是否完备。(5分)个人成绩(50%)个人成绩能按时到指定设计地点进行课程设计,不旷课,不迟到,不早退。工作量饱满。(20分)课程设计报告中由此同学完成的部分完整、合理、正确(15分)检查时能准确、详细地回答老师提问。(10分)在报告中有个人总结和心得(5分)合计综合成绩成绩等级王永毕佳驹杜鹏飞郭霜瓅刘时恒注:按优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、不及格(60分以下)五级评定成绩。指导教师: 李 红 斌 武汉科技大学课程设计名称:Flash动画制作与创意班 级:组 长:成 员:Flash动画制作与创意【实验目的】 建立帧、元件、实例、场景、库、舞台、时间轴、图层、属性面板等概念的认识。 了解和掌握Flash动画中的形变动画、位移动画、逐帧动画。了解和掌握Flash动画中的引导线动画、遮罩动画。 掌握动画测试的基本方法。 掌握用ActionScript进行Flash简单编程。【实验内容】 吃金币游戏-策划做游戏首先脑子里先要有整个游戏的规划,拿笔画个流程简图,然后再下手。游戏流程的规划是很重要的, 做一个游戏前,草稿纸上来来回回要打个半天的草稿才开工,我一直认为游戏的规划部分是很难的,如果真等到全部想好了,做起来其实是个很轻松的过程,只是耗时间罢了。基本描述:1.天上掉宝物,地下小人物由自己控制,去接宝得分 。2.时间限制30秒 。基本描述完后,我继续在草稿纸上又写下详细的几处描述:1.宝物分四种:金币10、金币50、增加时间的宝物、瞬间获得屏幕所有金币的宝物。 2.要有两个人能选,一个人物太无聊。 3.最好来点技能!4.要能记录我最高得分,有点挑战性! 5.玩到后面最好难度慢慢增加,就让下落物品速度加快吧! 6.音乐音效也应该有的。大概想了下这个小游戏的运行过程:开始画面选择人物人物出现,开始30秒计时,天上开始掉宝游戏中右上角几分时间到后画面宝物消失弹出历史最高分按按钮重新开始 统计了下一共有多少东西:人物、宝物、时间显示、分数显示、选择人物还有游戏结束后历史高分的两个提示板、背景图片和音乐音效。游戏不管大小,按照流程走。为的是明确整个游戏的过程,然后统计下有多少东西要做,然后一样样做。接下来就是搜集要用到的素材。我找了张背景图,找了两张火影的卡通人物:鸣人和小李。接下去就是先把要用到的动画元件做好。然后就开始考虑程序部分。先讨论下AS的问题。先不急于动手打代码,我们先要想好这代码怎么个写法,怎么安排。我们用点面向对象编程的概念。把那几个东西独立开来做,就是分几个CLASS(类)来做。比如,人物,我们就搞个人的CLASS,宝物,我们就搞个宝物的CLASS,和传统的F9按开一股脑的打代码不同,CLASS类文件是另外写的.AS文件,然后游戏主的.SWF主文件调用的。每个CLASS都会被绑定在对应的MC上游戏一共就那么几个MC,每人把自己对应的MC绑好合成一体,在舞台上一合成,就是个完整的能运作的游戏了。这样的结构有什么好处?清晰,修改起来方便,知道哪的问题上哪个地方改。CLASS封装性好,不受其它MC和CLASS的影响。适合好几个人一起开发。把整个游戏一个个零件拆开做,不容易犯错。人物有两个:小李和鸣人经过分析,这两个人物基本控制部分是一样的,然后就区别在两个人的各自的特殊技能不一样。于是我们可以这么做:先建个“人物基本控制.as”类。建个“小李.as”类,第一行一句代码继承“人物基本控制.as”类,然后在正文内容里写上小李特殊技能。建个“鸣人.as”类,第一行一句代码继承“人物基本控制.as”类,然后在正文内容里写上鸣人特殊技能。“人物基本控制.as”类也是继承了MovieClip类,因为要用到MovieClip类里的功能嘛比如人物移动要用到onEnterFrame,MC._x,MC._y这点功能。类的继承,还可以覆盖继承过来类里的方法。CLASS的内容分四部分:声明本CLASS所用到的变量,这里要提的是,和在SWF里定义变量不同。SWF里你可以用比如a=1这种自动变量形式,而在CLASS里你必须写明a的类型是Number,再定义变量值是1。CLASS的构造函数,什么意思呢?就是当CLASS的实例出现后,自动执行这个function里的内容,一般都是些初始化的内容。function的名称要和CLASS类的名称一样,而且这里初始化一般都是用个init()函数,init函数具体在后面会自己定义。为什么要这样而不直接把初始化内容写在构造函数内呢?因为当继承其它类的时候,构造函数是不能继承的,还得自己再写一次,而init函数是可以继承的,直接把内容写在构造函数里的话,每次继承就还要重写次,用自定义init函数的话,就可以少写这部分内容。是定义隐式设置-获取的function,什么意思呢? class可以看作一个封闭的盒子,跟外界无关。但有时候我们必须读取或者改变CLASS类内的某个变量。这时候就必须借助隐式设置-获取的function。只有定义后,外界才能读取和设置CLASS内的变量。定义的方法就是比普通function多了get/set这个单词。而且必须要指定返回变量类型,无需返回则用Void表示。写function。当CLASS实例化在了一个MC后,trace(MC._d)就得到1,输入MC._d=2后,MC内的d就变成2,而private设定的变量,你从外部既不能读取也不能赋值。游戏时画面上的几大元素(MC):1、人物2、宝物3、分数(右上角)4、时间(左上角)5、游戏总控制(包括选人、最后最高分显示)。每个MC要实现的功能:人物:1.能够左右按键移动控制移动2.移动范围限定(不能跑出屏幕吧?)3.按上键技能4.一些初始化设定(刚开始出现的坐标,移动速度)。宝物:1.按随机速度下落,落出屏幕消失2.碰撞检测,是否碰到人物3.碰到人物后产生加分、加时间等不同的效果4.初始化设定(刚开始出现的坐标,移动速度)。分数:显示分数。时间:1.30秒倒计时,显示时间变化2.到了0秒,通知游戏控制执行结束游戏的function。游戏控制:要控制协调以上几个元素之间的关系,以及游戏的过程。人物选择:按照人物选择框的选择,attach人物MC到舞台(人物attach进来后,就会自动按照他自己的CLASS行动啦),同时调用掉宝控制的function开始掉宝以及时间控制里倒计时方法,开始30秒倒计时。掉宝控制:按照随机时间间隔,随机的attach宝物种类到舞台(一样!宝物attach进来后,就会自动按照他自己的CLASS行动)。金币消失:这个funtion要在时间到0时被调用,作用是让屏幕上的金币原地消失。游戏结束:这个function是被时间控制里当时间=0的时候调用的,作用为判断比较当前得分和最高分,显示框出现显示最高分。就拿Time_control.as来说明,要关联到库里的元件时间: 如果是自己拖到舞台上,“第一帧导出”就不选,如果是attach上舞台,则要选。接宝游戏中人物类的CLASS文件:一个FLA主文件:run_game.fla三个目录:playeritemsgame目录player里有: Player_1.asPlayer_2.as目录items里有:Jin.asBao1.asBao2.as目录game里有: Game_control.asScore_view.asTime_control.as人物类的CLASS,首先是Player_1.as,人物小李的类。由两帧组成,一是“stand”,二是“run”。 人物上面有一层有个MC(hit),靠这个mc来做碰撞检测。金币里面也有这个名叫hit的MC,判断人物和金币是不是相碰是用这个语句的: 金币MC.hit.hitTest(人物MC.hit)。补充个游戏里的结构:_root下有三个空MC: pl,item和xspl这个空MC是用来attach人物的。item这个空MC是用来attach宝物的。xs这个MC是用来attach显示得分的。为什么要这么做呢?因为管理方便。Player_1.as的代码 class player.Player_1 extends MovieClip private var hit:MovieClip; /人物MC里出现的东西都要声明,hit这个MC也不例外public var speed:Number;/这个是人物移动的速度/构造函数function Player_1() init();/初始化的人物打包在init()里了/隐式设置-获取法public function set _speed(sss:Number):Void speed = sss;/可供外界用MC._speed=X修改speed的数值public function get _speed():Number return (speed);/可供外界读取speed的数值/私-公有方法/初始化方法private function init() _y = 310;_x = 300;/人物来到舞台后的初始位置speed = 6;/移动速度onEnterFrame = Move;/人物来到舞台后就开始onEnterFrame,内容见Move这个function/人物移动private function Move() if (Key.isDown(37) _xscale = -100;_x -= speed;this.gotoAndStop(run); else if (Key.isDown(39) _xscale = 100;_x += speed;this.gotoAndStop(run); else this.gotoAndStop(stand);/以上是左右键的定义 if (Key.isDown(38) speed = 12; else speed = 6;/以上是上键的定义,按着后速度就加倍range();/范围定义,内容见下面/限定移动范围private function range() if (_x540) _x = 540;if (_x380) this.removeMovieClip();/if (hit.hitTest(_root.pl.player.hit) getItem();/ 碰撞检测哦public function getItem() _root.music_control.snd(jin);/声音控制,以后会讲到_root.score += score;depth = _root.xs.getNextHighestDepth();var a:MovieClip = _root.xs.attachMovie(getScore, getScore+depth, depth+);/ATTACH显示得分的MCa.aaa.score = +score;a._x = _x;a._y = _y;this.removeMovieClip();两个宝物的CLASS,继承了金币的类,只不过改写了被人物吃到后的效果爱心 class items.Bao1 extends items.Jin public function getItem() _root.music_control.snd(bao);depth = _root.xs.getNextHighestDepth();var a:MovieClip = _root.xs.attachMovie(getScore, getScore+depth, depth+);a.aaa.score = TIME;a._x = _x;a._y = _y;/_root.time_c._time += 8;/调时间控制类的public方法,后面会讲到this.removeMovieClip();五角星 class items.Bao2 extends items.Jin public var score:Number = 30;public function getItem() /_root.score+=score_root.music_control.snd(bao);/for (var i in _root.item) if (_root.item._name.substr(0, 3) != bao) _root.item.getItem();_root.score += score;depth = _root.xs.getNextHighestDepth();var a:MovieClip = _root.xs.attachMovie(getScore, getScore+depth, depth+);a.aaa.score = +score;a._x = _x;a._y = _y;/this.removeMovieClip();时间控制类class game.Time_control extends MovieClipprivate var t:Numberpublic var time:Number/-/*function Time_control()init()复制代码*/这段被注销掉了,因为我不要它一出现在舞台就开始倒计时。什么时候倒计时,游戏控制类会给本类发出命令(调用本类中的Go()的function) /-public function set _time(ttt:Number):Voidtime=tttpublic function get _time():Numberreturn(time)/=private function TimeGo()t+if(t%30=0) time-if(time=0) delete onEnterFrame_root.game_c.endGame()/倒计时代码,当时间=0,通知游戏控制类作出endGame()的行为。public function Go()t=1time=30onEnterFrame=TimeGo/初始化,并开始倒计时游戏控制类Game_control.as控制游戏:1.先初始化游戏参数,然后让选人框可见,让玩家选人。2.玩家选好人,它就把人物attach到舞台上,同时通知时间控制类可以30秒倒计时了,又同时开始在天上撒金币和宝物。3.时间控制类显示时间到0后,马上又来通知游戏,时间到0了4.时间显示到0后,停止撒金币,让画面上已有的金币宝物全部消失,同时一番比较后显示出你的历史最高分,同时提供你个重新游戏的按钮5.按重新游戏,游戏就回到第1步class game.Game_control extends MovieClip private var t:Number = 1; private var game_begin:MovieClip private var game_end:MovieClip private var depth:Number private var topScore:Number=0 public var time:Number; /构造函数 function Game_control() init(); /隐式设置方法 public function set _time(ttt:Number):Void /公-私有方法 public function init() time=35 _root.score = 0; _root.createEmptyMovieClip(pl, 3); _root.createEmptyMovieClip(item, 2); _root.createEmptyMovieClip(xs, 1); /初始化里建立空MC,同时也就是把以前的MC删除覆盖 game_begin._visible=true game_end._visible=false _root.music_control.bg(1) public function chose(n:Number) game_begin._visible=false _root.pl.attachMovie(ren+n, player, 1); _root.time_c.Go()/时间控制小弟号开始倒计时啦 _root.music_control.bg(2) onEnterFrame = onGame; private function onGame() t+; if (t%time = 0) depth=_root.item.getNextHighestDepth() if (random(8) = 0) var a:MovieClip=_root.item.attachMovie(bao+(1+random(2), bao+depth, depth+); else if (random(5) = 0) var a:MovieClip=_root.item.attachMovie(jin2, jin+depth, depth+); a.score=50 else _root.item.attachMovie(jin1, jin+depth, depth+); time = 20+random(30); /随机时间间隔里播撒出随即类型的宝物了 private function jin_disappear() for(var i:String in _root.item) _root.item._speed=0 _root.item._bspeed() _root.item._alpha-=5 _root.item._xscale+=2 _root.item._yscale+=2 if(_root.item.alphatopScore) topScore=_root.score game_end.sc=topScore /判断和记录历时最高分,同时显示最高分框显示 事实上在人物选择框,两个人物是按钮,用来调用游戏控制类里的chose(n:Number)方法。当chose(n:Number)被调用时,后面一连串的进程就都自动展开了声音控制在游戏第一帧先用Sound类把库里的声音关联起来,然后做个Object,在里面定义function来控制声音的。music_bg1 = new Sound();music_bg1.attachSound(bg1);music_bg2 = new Sound();music_bg2.attachSound(bg2);music_bg_jin = new Sound();music_bg_jin.attachSound(bg_jin);

温馨提示

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

评论

0/150

提交评论