可爱战机.fal

时间:2018-07-05 04:01:30
【文件属性】:

文件名称:可爱战机.fal

文件大小:371KB

文件格式:FLA

更新时间:2018-07-05 04:01:30

战机

private var backSound:Sound = new Back_Sound ; //实例化声音开关对象 private var sound_MC:Sound_MC=new Sound_MC(); //创建一个标识变量,该变量用于标记背景音乐是否在播放,初始状态为播放 private var soundON:Boolean = true; //创建一个Soundchannel对象 private var channel:SoundChannel; //创建一个影片剪辑对象,该对象作为容器用于放置游戏中循环运动的背景 var Map:MovieClip = new MovieClip(); //实例化游戏结束信息影片剪辑 var gameover_MC:game_Over=new game_Over();; //实例化返回按钮 var Back_Btn:back_btn=new back_btn() public function Game():void { //定义舞台的帧频 stage.frameRate = 35; //使舞台可以最大化 stage.scaleMode = StageScaleMode.EXACT_FIT; //侦听开始游戏按钮的单击事件,调用playGame()函数开始游戏 Play_Btn.addEventListener(MouseEvent.CLICK,playGame); //侦听游戏介绍按钮的单击事件,调用GameIntro()函数弹出游戏介绍界面; Help_Btn.addEventListener(MouseEvent.CLICK,GameIntro); //播放背景音乐,使背景音乐循环播放 channel = backSound.play(0,100000); } //创建【帮助】按钮鼠标单击事件响应函数 private function GameIntro(e:MouseEvent){ //使开始界面影片剪辑跳转到第二帧显示帮助信息内容 Start_MC.gotoAndStop(2); //使舞台上的【开始】按钮和【帮助】按钮不可见 Play_Btn.visible=false; Help_Btn.visible=false; //为影片剪辑中的【back】按钮添加鼠标单击事件侦听器 Start_MC.Back_Btn.addEventListener(MouseEvent.CLICK ,toStart) ; } //创建【back】按钮鼠标单击事件响应函数 private function toStart(e:MouseEvent ){ //移除【back】按钮的事件侦听器 Start_MC.Back_Btn.removeEventListener(MouseEvent.CLICK ,toStart); //使舞台上的【开始】按钮和【帮助】按钮可见 Play_Btn.visible=true; Help_Btn.visible=true; //开始界面影片剪辑跳回到第一帧 Start_MC.gotoAndStop(1); } private function playGame(event:MouseEvent):void { //隐藏开场界面 hideStartScene(); //调用函数加载背景图并使其循环滚动 loadMap(); //调用函数加载记分器 loadScore(); //loadTime(); //加载计时器 //调用函数加载主角 loadRole(); //调用函数加载敌人 loadEnemy(); //调用函数放置显示生命值的影片剪辑 loadLife(); //调用函数使背景音乐控制按钮显示 loadSoundMC(); } //创建函数移除开始界面中的各个元素 private function hideStartScene():void { //移除开始界面影片剪辑 removeChild(Start_MC); //隐藏【开始】按钮和【帮助】按钮 removeChild(Play_Btn); removeChild(Help_Btn); } //在舞台上放置游戏背景 private function loadMap():void { //实例化天空背景对象 var backG:bg=new bg(); //实例化地面对象 var Land:land = new land(); //设置地面的位置 Land.y = stage.stageHeight - Land.height / 2; //使天空背景显示 Map.addChild(backG); //实例化第一个游戏背景图 var Map_1:map_1 = new map_1(); //将第一个游戏背景图添加到容器中 Map.addChild(Map_1); //为第一个游戏背景图影片剪辑添加帧频事件侦听器 Map_1.addEventListener(Event.ENTER_FRAME,moveMap); //实例化第二个游戏背景图 var Map_2:map_2= new map_2(); //设置第二个背景图的初始位置 Map_2.x = Map_1.width; //将第二个游戏背景图添加到容器中 Map.addChild(Map_2); //将地面图添加到容器中 Map.addChild(Land); //为第二个游戏背景图添加帧频事件侦听器 Map_2.addEventListener(Event.ENTER_FRAME,moveMap); //使容器显示于舞台的底层 stage.addChildAt(Map,0); } //使背景循环移动 private function moveMap(event:Event):void { var mc:MovieClip = event.target as MovieClip; //使背景图向左移动 mc.x -= 2; //判断背景图是否离开舞台 if (mc.x<=-(mc.width)) { //重新定义背景图的位置,使其与上一张图斜接。这里要注意,衔接位置应该在舞台外,否则会出现明显的停顿现象 mc.x=stage.stageWidth+30 ; } } //在舞台上放置记分器 private function loadScore():void { //初始化分数值变量 Score=0 //实例化记分器对象 Score_MC = new score(); //设置记分器对象的位置 Score_MC.x = 100; Score_MC.y = stage.stageHeight - 25; //将记分器放置到舞台 stage.addChild(Score_MC); //设置记分器显示的初始值 Score_MC.Score_Text.text = "0"; } //在舞台上放置生命值影片剪辑 private function loadLife():void { //对象实例化 Life_MC= new life(); //设置记分器对象的位置 Life_MC.x = 250; Life_MC.y = stage.stageHeight - 25; //将记分器放置到舞台 stage.addChild( Life_MC); } //在舞台上放置声音控制按钮 private function loadSoundMC():void { //设置对象在舞台上的放置位置 sound_MC.x = 520; sound_MC.y = stage.stageHeight - 25; //使对象处于按钮模式 sound_MC.buttonMode = true; //将对象放置到舞台 stage.addChild(sound_MC); //为对象添加鼠标单击事件侦听器 sound_MC.addEventListener(MouseEvent.CLICK ,controlSound); } //加载敌人 private function loadEnemy():void { //指定敌人出现的时间间隔 var delay:uint = 3000; //无限次循环 var repeat:uint = 0; //创建时间对象 enemyTimer = new Timer(delay,repeat); //并添加事件侦听器侦听时间对象的时间事件使敌人显示 enemyTimer.addEventListener(TimerEvent.TIMER,showEnemy); //启动计时器; enemyTimer.start(); } //使敌人以一定的时间间隔随机出现 private function showEnemy(e:TimerEvent):void { //随机生成数字1或2 var i:int = Math.round(Math.random() * 1 + 1); //如果生成的是1 if (i==1) { //实例化第一个敌人对象 Enemy = new enemy_1(); } else { //实例化第二个敌人对象 Enemy = new enemy_2(); } //设置敌人在舞台上的位置 Enemy.x = 630; Enemy.y = Math.round(Math.random()*(stage.stageHeight)-100); //如果垂直方向位置过高,使其位于指定的位置 if (Enemy.y < 10) { Enemy.y = 30; } //为敌人对象添加帧频事件侦听器使其能够运动 Enemy.addEventListener(Event.ENTER_FRAME,enemyLeft); //将敌人置于容器中 Enemys.addChild(Enemy); //将容器置于舞台上; stage.addChildAt(Enemys,1); } //创建帧频事件响应函数使敌人左移 private function enemyLeft(m:Event):void { //实例化事件目标对象 var mc:MovieClip = m.target as MovieClip; //使对象左移 mc.x -= 5; //如果对象移出舞台 if (mc.x <= -50) { //移除事件侦听器 mc.removeEventListener(Event.ENTER_FRAME,enemyLeft); //如果容器中有对象 if(Enemys.contains(mc) ) {//将对象从容器中移除 Enemys.removeChild(mc); } } } //加载游戏主角 private function loadRole():void { //变量初始化 bool=true; //实例化主角 Role = new role(); //设置主角位置 Role.x = 150; Role.y = 200; //使影片剪辑从第一帧开始播放 Role.gotoAndPlay(1); //将主角放置到舞台上 stage.addChildAt(Role,1); //创建一个新对象 key = new Object(); //为舞台添加键盘按下键事件侦听器 stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); //为舞台添加键盘按键释放事件侦听器 stage.addEventListener(KeyboardEvent.KEY_UP,onkeyUp); //为舞台添加帧频事件侦听器 stage.addEventListener(Event.ENTER_FRAME,roleMove); } //键盘键按下事件响应函数 private function onkeyDown(event:KeyboardEvent):void { //设置被按下的键为真 key[event.keyCode] = true; } //键盘按键释放事件响应函数 private function onkeyUp(event:KeyboardEvent):void { //删除key对象 delete key[event.keyCode]; //设置变量值 bool = true; //主角恢复到水平飞行状态 Role.gotoAndStop(13); } //舞台帧频事件响应函数 private function roleMove(event:Event):void { //如果按下的是左箭头键 if (key[Key_LEFT]) {//如果主角没有从左侧飞出舞台 if (Role.x > 20) { //主角向左移动 Role.x -= speed; } } //如果按下的是上箭头键 if (key[Key_UP]) { //如果主角没有从上方飞出舞台 if (Role.y > 20) { //主角向上移动 Role.y -= speed; //播放主角飞行动画 Role.gotoAndPlay(14); } } //如果按下右箭头键 if (key[Key_RIGHT]) { //如果主角没有从右侧飞出舞台 if (Role.x < stage.stageWidth) { //主角向右移动 Role.x += speed; } } //如果按下下箭头键 if (key[Key_DOWN]) {//如果主角位于指定范围内 if (Role.y < stage.stageHeight - 80) { //主角下移 Role.y += speed; //播放飞行动画 Role.gotoAndPlay(2); } } //如果按下空格键 if (key[Key_Space]) { //如果变量值为true if (bool==true) { //实例化炮弹对象 Bullet = new bullet(); //定义炮弹的位置,使其与主角相同 Bullet.x = Role.x; Bullet.y = Role.y; //播放射击声 bulletSound.play(); //为炮弹对象添加帧频事件侦听器; Bullet.addEventListener(Event.ENTER_FRAME,bulletMove); //将炮弹对象置于炮弹容器中 Bullets.addChild(Bullet); //将炮弹容器置于舞台上 stage.addChildAt(Bullets,1); //设置变量值 bool = false; } } //如果有敌人 if (Enemy) { //遍历所有的敌人 for (var i:int=0; i= stage.stageWidth) { //移除事件侦听器使其不再右移 mc.removeEventListener(Event.ENTER_FRAME,bulletMove); //如果容器中有对象 if(Bullets.contains(mc) ) { //将对象从容器中移除 Bullets.removeChild(mc); } } //如果敌人出现 if (Enemy) { //获取敌人个数 var num:int = Enemys.numChildren; //遍历所有敌人 for (var i:int = 0; i100) { //向舞台添加游戏结束信息影片剪辑 stage.addChild(gameover_MC); //跳转到指定的帧显示胜利信息 gameover_MC.gotoAndStop(1); //显示玩家得分 gameover_MC.result_txt.text = Score.toString(); //调用函数移除游戏元素和相关事件侦听器 gameover(); } } //控制背景声音的播放 private function controlSound(s:MouseEvent ) { //如果背景声音正在播放 if (soundON==true) { //变量值设置为false soundON = false; //声音控制影片剪辑跳到第二帧显示静音标志 sound_MC.gotoAndStop(2); //停止声音播放; channel.stop(); } else { //如果背景声音没有播放,变量值设置为true soundON = true; //声音控制影片剪辑跳到第一帧取消静音标志的显示 sound_MC.gotoAndPlay(1); //背景声音开始循环播放; backSound.play(0,1000000); } } //移除游戏各个元素和事件侦听器 private function gameover():void { //指定【back】按钮的位置 Back_Btn.x=500; Back_Btn.y=300; //在舞台上放置【back】按钮 stage.addChild (Back_Btn); //为按钮添加鼠标单击事件侦听器 Back_Btn.addEventListener(MouseEvent.CLICK ,goBack); //移除游戏中各个对象的事件侦听器 stage.removeEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); stage.removeEventListener(KeyboardEvent.KEY_UP,onkeyUp); stage.removeEventListener(Event.ENTER_FRAME,roleMove); sound_MC.removeEventListener(MouseEvent.CLICK ,controlSound); Enemy.removeEventListener(Event.ENTER_FRAME,enemyLeft); //当敌人容器中的子对象不为0 while(Enemys.numChildren!=0){ //将容器最底层的对象删除 Enemys.removeChildAt(0); } //从舞台上移除游戏对象 stage.removeChild (Map); stage.removeChild(Enemys); stage.removeChild(Role); stage.removeChild (Score_MC); stage.removeChild (Life_MC); stage.removeChild (sound_MC); } //创建【back】按钮的鼠标单击事件响应函数 private function goBack(e:MouseEvent ){ //从舞台上移除结束信息影片剪辑 stage.removeChild(gameover_MC); //移除【back】按钮的事件侦听器 Back_Btn.removeEventListener(MouseEvent.CLICK ,goBack); //移除舞台上的【back】按钮 stage.removeChild (Back_Btn); //调用函数加载对象重新开始游戏 loadMap(); loadScore(); loadRole(); loadEnemy(); loadLife(); loadSoundMC(); } } }


网友评论