文件名称:可爱战机.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