網路教學(e-Learning)校園社群(e-Community)服務台(e-Service)系所班網(e-Class)登入
2012.10.23角色攻擊(遠程集氣)
by 高鈺婷 2012-12-03 13:59:39, 回應(0), 人氣(905)

import flash.display.MovieClip;
import flash.accessibility.Accessibility;
import flash.media.SoundChannel;
import flash.events.Event;
import flash.events.KeyboardEvent;

var enemy :MovieClip  = new emy();
var hol  :MovieClip  = new hold();
var fir   :MovieClip  = new fire();
var bul1 :MovieClip  = new bullet();
var bul2 :MovieClip  = new bullet();
var plySpd :int = 5;
var emySpd  :int = 8;
var bulSpd :int = 15;

var initT :int  = 0;
var currT :int  = 0;

var ready :Boolean = false;
var hp  :int  = 3;

var fsd  : fsound = new fsound();
var hsd : hsound = new hsound();
var ch :SoundChannel = new SoundChannel();

create();
function create()
{
 stage.addChild(enemy);
 enemy.gotoAndStop(1);
 enemy.x = Math.floor(Math.random()*451)+50;
 enemy.y = 4;
 hp = 3;
 enemy.addEventListener(Event.ENTER_FRAME,AI);
}
function AI(e:Event)
{
 if(enemy.x + emySpd  > 500)
 {
  enemy.x = 500;
  emySpd *= -1;
 }
 else if (enemy.x + emySpd < 50)
 {
  enemy.x = 50;
  emySpd *= -1;
 }
 else
  enemy.x += emySpd;
}
stage.addEventListener(Event.ENTER_FRAME,loop);
function loop(e:Event)
{
 if (enemy.death == true)
 {
  enemy.removeEventListener(Event.ENTER_FRAME,AI);
  stage.removeChild(enemy);
  create();
 }
 if(ch.position > 1600)
 ch = hsd.play(0);
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,kdown);
function kdown(e:KeyboardEvent)
{
 switch(e.keyCode)
 {
  case 37:
  if(player.x - plySpd < 50)
   player.x = 50;
  else
   player.x -= plySpd;
  break;
  case 39:
  if(player.x + plySpd > 500)
   player.x = 500;
  else
   player.x += plySpd;
  break;
  case 32:
   if(initT == 0)
   {
    initT = getTimer();
    stage.addEventListener(Event.ENTER_FRAME,gather);
   }
 }
}
function gather(e:Event)
{
 currT = getTimer();
 if(currT - initT > 2000 && ready == false)
 {
  ready = true;
  stage.removeEventListener(Event.ENTER_FRAME,gather);
  stage.addChild(hol);
  hol.addEventListener(Event.ENTER_FRAME,follow);
  hol.play();
  ch = hsd.play();
 }
}
function follow(e:Event)
{
 e.target.x = player.x;
 e.target.y = player.y - player.height/2;
}
stage.addEventListener(KeyboardEvent.KEY_UP,kup);
function kup(e:KeyboardEvent)
{
 if(e.keyCode == 32)
 {
  initT = 0;
  stage.removeEventListener(Event.ENTER_FRAME,gather);
  if(ready == true)
  {
   ready = false;
   ch.stop();
   hol.removeEventListener(Event.ENTER_FRAME,follow);
   stage.removeChild(hol);
   setbul(fir);
  }
  else
  {
   for(var i = 1; i < 4 ; i++)
   if(this["bul" + i].within == false)
   {
    setbul(this["bul" + i ]);
    break;
   }
  }
 }
}
function setbul(bul)
{
 bul.x = player.x ;
 bul.y = player.y - player.height/2;
 stage.addChild (bul);
 bul.within = true;
 fsd.play();
 bul.addEventListener(Event.ENTER_FRAME,got);
}
function got(e:Event)
{
 e.target.y -= bulSpd;
 if(e.target.hitTestObject(enemy) == true && hp > 0)
 {
  e.target.within = false;
  e.target.removeEventListener(Event.ENTER_FRAME,got);
  stage.removeChild(MovieClip(e.target));
  hp -= e.target.dam;
  if(hp > 0 )
   enemy.play();
  else
   enemy.gotoAndPlay("die");
 }
 else if (e.target.y < 0)
  {
   e.target.within  = false;
   e.target.removeEventListener(Event.ENTER_FRAME,got);
   stage.removeChild(MovieClip(e.target));
  }
}