ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:102.22KB ,
资源ID:26778991      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26778991.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(坦克 史书尧.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

坦克 史书尧.docx

1、坦克 史书尧武汉理工大学华夏学院课 程 设 计课程名称多媒体技术应用课程设计题 目 坦克游戏专 业 软件工程 班 级 2081 学 号 1022* 姓 名 史书尧 成 绩 _指导教师 张玉蓉 2010 年6 月14 日至2010年6月18日1. 打开使用flash编辑器制作一个坦克。利用填色工具,矩形框工具等制作坦克模型,步骤如下:1.1画出机身:1.2画出轮子的组合,并制作成一个小动画,让轮子有颤动的迹象(使用逐帧动画),最后将轮子转化为元件:1.3将轮子和坦克组合,这样我方的坦克就做好了2. 制作敌机:只将我方坦克颜色(机身,和其他部分组成部位颜色改换一下)即可,构成图如下:制作时的相关图

2、层:轮子部分:炮身部分:3. 制作子弹:3.1制作子弹飞出时的火焰(使用放射性颜色,颜色处可以使用ALPHA减淡)3.2使用放射性黑白色画3.3画出炮头:使用椭圆工具(红色)画出炮头,并离散,使之被炮身覆盖4. 制作爆炸效果:使用ALPHA和色彩渐变制作逐帧动画:这样,基本所有的元件就做好了2打开flash builder开始编辑代码相关代码如下:FOE类:package com.wepull.tank import flash.display.MovieClip; import flash.events.Event; import flash.events.KeyboardEvent; im

3、port mx.controls.Alert; import mx.controls.SWFLoader; import mx.core.Application; import mx.core.UIComponent; import mx.events.FlexEvent; public class Foe extends UIComponent /*加载外观*/ /定义外部swf文件的加载器 public var swfload:SWFLoader = new SWFLoader(); /外观 public var display:MovieClip ; /速度 public var sp:

4、Number =3; /方向 public var asp:String = ;/U:上 R:右 D:下 L:左 public function Foe() randomAsp(); /利用外部文件加载器加载文件 /添加监听 当对象构件完成后 调用 complete方法 addEventListener(FlexEvent.CREATION_COMPLETE,complete); public function complete(e:FlexEvent):void swfload.source = clips/dj.swf; swfload.addEventListener(Event.COM

5、PLETE,swfloaded); addChild(swfload); public function swfloaded(e:Event):void display = swfload.content as MovieClip; addChild(display); display.gotoAndStop(1); stage.addEventListener(Event.ENTER_FRAME,onflush); public function onflush(e:Event):void reset(); /根据坦克的方向移动 if(asp=U)/向上 display.gotoAndSto

6、p(1); this.y -= sp; else if(asp=R)/向右 display.gotoAndStop(2); this.x += sp; else if(asp=D)/向下 display.gotoAndStop(3); this.y += sp; else if(asp=L)/向左 display.gotoAndStop(4); this.x -= sp; /越界的敌军重置,重新出现 public function reset():void if(this.x1000 | this.y1000)/越界 randomAsp();/随机定方向 this.x=0; this.y=0;

7、 /敌军被打中后 public function goout():void this.x=-10000; this.y=-10000; /随机定方向 public function randomAsp():void var i:int=Math.random()*4;/随机函数随机出来的数在0和1之间 if(i=0) this.asp=U; else if(i=1) this.asp=R; else if(i=2) this.asp=D; else if(i=3) this.asp=L; Bullet类:package com.wepull.tank import flash.display.

8、MovieClip; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Timer; import mx.controls.SWFLoader; import mx.core.UIComponent; import mx.events.FlexEvent; public class Bullet extends UIComponent /外部文件加载器 public var swfload:SWFLoader = new SWFLoader(); /外观 public var displa

9、y:MovieClip; /速度 public var sp:Number =25; /方向 public var asp:String = ; /是否可用 false为不可用 public var useable:Boolean=true; /控制爆炸效果 public var timer:Timer = new Timer(50,4); public function Bullet() addEventListener(FlexEvent.CREATION_COMPLETE,complete); /定时器时间到后执行ontimer方法 timer.addEventListener(Time

10、rEvent.TIMER,ontimer); public function ontimer(e:TimerEvent):void if(timer.currentCount=1)/timer第一次 display.gotoAndStop(5); else if(timer.currentCount=timer.repeatCount) display.nextFrame(); else if(timer.currentCount1&timer.currentCounttimer.repeatCount) display.gotoAndStop(8); this.goout();/移除 /开始

11、加载swf文件 public function complete(e:FlexEvent):void swfload.source = clips/fd.swf;/指定加载文件 swfload.addEventListener(Event.COMPLETE,swfloaded); this.addChild(swfload); /swf文件加载完成后 public function swfloaded(e:Event):void display = swfload.content as MovieClip; display.gotoAndStop(1); this.addChild(displ

12、ay); stage.addEventListener(Event.ENTER_FRAME,onflush); public function onflush(e:Event):void ifgoout();/监测是否越界 /跟据方向和速度移动 if(asp=U)/向上 display.gotoAndStop(1); this.y -= sp; else if(asp=R)/向右 display.gotoAndStop(2); this.x += sp; else if(asp=D)/向下 display.gotoAndStop(3); this.y += sp; else if(asp=L)

13、/向左 display.gotoAndStop(4); this.x -= sp; public function blast():void this.asp=;/先让子弹停下 timer.reset();/重置定时器 timer.start();/启动定时器 /如果子弹越界 就让子弹重置可用状态 public function ifgoout():void if(this.x1000 | this.y1000)/越界 goout();/回收 /把子弹放到看不见的地方 public function goout():void this.useable=true;/设置为可用状态 this.x=

14、10000; this.y=10000; package com.wepull.tank import flash.display.MovieClip; import flash.events.Event; import flash.events.KeyboardEvent; import mx.controls.Alert; import mx.controls.SWFLoader; import mx.core.Application; import mx.core.UIComponent; import mx.events.FlexEvent; public class Tank ext

15、ends UIComponent /移动方法 发射子弹方法 被击中爆炸 外观 /*加载外观*/ /定义外部swf文件的加载器 public var swfload:SWFLoader = new SWFLoader(); /外观 public var dispaly:MovieClip ; /速度 public var sp:Number = 10; /方向 public var asp:String = ;/U:上 R:右 D:下 L:左 /炮口方向 public var fireasp:String=U; /弹夹 public var bularr:Array=new Array(); p

16、ublic function Tank() super(); /利用外部文件加载器加载文件 /添加监听 当对象构件完成后 调用 complete方法 addEventListener(FlexEvent.CREATION_COMPLETE,complete); /*指定加载文件路径 并且添加加载完成事件*/ public function complete(e:FlexEvent):void swfload.source = clips/wj.swf; swfload.addEventListener(Event.COMPLETE,swfloaded); addChild(swfload);

17、public function swfloaded(e:Event):void dispaly = swfload.content as MovieClip; addChild(dispaly);/加载外观 dispaly.gotoAndStop(1);/让影片剪辑 转到第1帧并停止 /-每次进入新的帧就调用刷新方法 stage.addEventListener(Event.ENTER_FRAME,onflush); /添加键盘监听 键盘按下的时候 stage.addEventListener(KeyboardEvent.KEY_DOWN,onkey); /监听键盘弹起 stage.addEv

18、entListener(KeyboardEvent.KEY_UP,onkeyend); initBul();/初始化弹夹 public function onflush(e:Event):void /根据坦克的方向移动 if(asp=U)/向上 dispaly.gotoAndStop(1); this.y -= sp; else if(asp=R)/向右 dispaly.gotoAndStop(2); this.x += sp; else if(asp=D)/向下 dispaly.gotoAndStop(3); this.y += sp; else if(asp=L)/向左 dispaly.g

19、otoAndStop(4); this.x -= sp; /*开火方法 * 产生子弹,给子弹一个方向 * 把子弹放到application中 * */ public function fire():void var bul:Bullet=getBul(); bul.useable=false;/发送出去的子弹不可用 bul.asp=this.fireasp /子弹方向与坦克炮口方向同步 bul.x=this.x; bul.y=this.y; /获得主application var app:Application=this.parentApplication as Application; ap

20、p.addChild(bul); /得到子弹 public function getBul():Bullet var b:Bullet; for(var i:int=1;i 65 * w - 87 * d - 68 * s - 83 * j - 74 * */ public function onkey(e:KeyboardEvent):void var key:int = e.keyCode; / Alert.show( String(key) ); if(key=87)/往上走 asp =U; fireasp=U;/更新炮口方向 else if(key=68)/向右 asp = R; fi

21、reasp=R;/更新炮口方向 else if(key=83)/向下 asp = D; fireasp=D;/更新炮口方向 else if(key=65)/向左 asp = L; fireasp=L;/更新炮口方向 else if(key=74)/开火 fire(); /键盘弹起方向无 public function onkeyend(e:KeyboardEvent):void asp=; /*对弹夹初始化 * 产生子弹并放到弹夹 * 同时添加到application中 * */ public function initBul():void var app:Application=this.p

22、arentApplication as Application; for(var i:int;i=50;i+) var b:Bullet=new Bullet();/产生一个子弹 b.goout();/移除到看不见的地方 bularr.push(b);/把子弹放入弹夹 app.addChild(b); 主代码: Application background-image: Embed(imgs/bg.png); background-repeat: repeat; background-position: center; background-blend: multiply; borderSki

23、n: ClassReference(com.degrafa.skins.CSSSkin); !CDATA import com.wepull.tank.Bullet; import com.wepull.tank.Foe; import com.wepull.tank.Tank; import mx.controls.Alert; import mx.core.UIComponent; import mx.events.FlexEvent; public var tank:Tank = new Tank();/产生坦克实例 public var f:Foe=new Foe(); protect

24、ed function init(event:FlexEvent):void this.addChild(tank);/将坦克实例加载到application中 tank.x=0; tank.y=200; this.addChild(f); stage.addEventListener(Event.ENTER_FRAME,onflush); public function onflush(e:Event):void var arr:Array=tank.bularr;/所有子弹 for(var i:Number=1;iarr.length;i+) var bul:Bullet=arri as

25、Bullet; if(bul!=null & bul.useable=false) if(ifhit(bul,f) bul.blast();/爆炸 / bul.goout();/回收 f.goout(); / Alert.show(相撞!); /*检测两个对像是否相撞*/ public function ifhit(o1:UIComponent,o2:UIComponent):Boolean var m_x:Number =Math.abs(o1.x-o2.x); /两个对象x轴的差值 var m_y:Number =Math.abs(o1.y-o2.y); /两个对象y轴的差值 if(m_x50 & m_y /mx:Applicati

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1