setLevel();
function createGun(){
var mcGunship :Gunship = new Gunship();
addChild(mcGunship);
mcGunship.x =275;
mcGunship.y =485;
mcGunship.name ="mcGunship";
lives--;
}
function setLevel(){
//reset the values
createGun();
alienArray = new Array();
trackerArray = new Array();
bulletArray = new Array();
enemyTimer = new Timer(timerVal);
spaceshipTimer = new Timer(10000);
alienSpaceship = new AlienSpaceship();
mcBullet = new Bullet();
counter = 0;
tMessage.text = "";
tLevel.text = level.toString();
tScore.text = score.toString();
tLives.text = lives.toString();
btnFinish.visible = false;
//btnNextLevel.removeEventListener(MouseEvent.CLICK, restartGame);
btnNextLevel.visible = false;
btnNextLevel.enabled = false;
//btnTryAgain.removeEventListener(MouseEvent.CLICK, restartGame);
btnTryAgain.visible = false;
btnTryAgain.enabled = false;
mcLives.alpha = 1
if(lives>0){
mcLives.gotoAndStop(lives);
} else if (lives == 0){
mcLives.alpha = 0;
}
//to place aliens on stage
if(level <=5){
enemyNumOfRows = 3 + level;
} else {
enemyNumOfRows = 8; //no more rows added. too narrow for shooting
alienSpeed = 20; //incease speed at higher levels
}
var a:int = 60; //offset from left
var b:int = 60; //top margin
for(i = 0; i < enemyNumOfRows; i++){
for (j= 0; j <enemyNumInARow; j++){
var alien :Alien = new Alien();
alien.x = a + j * 40;
alien.y = b + i * 40;
alien.name = "alien " + (i+1).toString() + " " +(j+1).toString();
alienArray.push(alien);
addChild(alien);
} //eof j loop
} //eof i loop
for(i = 0; i < enemyNumInARow; i++){
var tracker : Alien = new Alien();
tracker.visible = true; //false;
tracker.alpha = 0.1;
addChild(tracker);
tracker.x = i * enemySpace + a;
tracker.y = 30;
tracker.name = "tracker" + i;
trackerArray[i] = tracker;
}
spaceshipTimer = new Timer(10000);
spaceshipTimer.start();
spaceshipTimer.addEventListener(TimerEvent.TIMER, createSpaceship);
alienSpaceship = new AlienSpaceship();
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
enemyTimer = new Timer(200);
enemyTimer.start();
enemyTimer.addEventListener(TimerEvent.TIMER, alienMoveRight);
addEventListener(Event.ENTER_FRAME, moveBullets);
trace ("setLevel() has completed");
} //eof setLevel()
function createSpaceship(evt:TimerEvent){
if (spaceshipFlying == false){
addChild(alienSpaceship);
spaceshipFlying = true;
alienSpaceship.x = -50
alienSpaceship.y = 20;
alienSpaceship.scaleX = alienSpaceship.scaleY = 0.15;
alienSpaceship.addEventListener(Event.ENTER_FRAME, moveSpaceship);
trace("alienSpaceship is created");
}
} //eof createSpaceship()
function moveSpaceship(evt:Event){
if(alienSpaceship.x >= stage.stageWidth ){ //stage.width indicate the stage width which could expand?
spaceshipFlying = false;
alienSpaceship.removeEventListener(Event.ENTER_FRAME, moveSpaceship);
alienSpaceship.parent.removeChild(alienSpaceship);
} else {
alienSpaceship.x += 5;
}
trace("alienSpaceship is moving");
} //eof moveSpaceship()
function keyDownHandler(evt:KeyboardEvent){
if(evt.keyCode ==37){
mcGunship.addEventListener(Event.ENTER_FRAME, moveGunLeft);
} else if (evt.keyCode == 39){
mcGunship.addEventListener(Event.ENTER_FRAME, moveGunRight);
}
if(evt.keyCode == 32) {
mcBullet = new Bullet();
mcBullet.scaleX = mcBullet.scaley = 0.5;
addChild(mcBullet);
mcBullet.x = mcGunship.x;
mcBullet.y = mcGunship.y;
//mcBullet.addEventListener(Event.ENTER_FRAME, flyBullet);
bulletArray.push(mcBullet);
playFiringSound();
}
trace("keyDonwHandler is called");
} //eof keyDownHandler()
function keyUpHandler(evt : KeyboardEvent){
if(evt.keyCode == 37){
mcGunship.removeEventListener(Event.ENTER_FRAME, moveGunLeft);
} else if(evt.keyCode == 39){
mcGunship.removeEventListener(Event.ENTER_FRAME, moveGunRight);
}
if (evt.keyCode == 32){
}
trace("keyUpHandler is called");
} //eof keyUpHandler()
function moveGunLeft(evt: Event){
if(mcGunship.x >= 20){
mcGunship.x -= 10;
} else {
mcGunship.x = 20;
}
trace("moveGunLeft() is called");
} //eof moveGunLeft()
function moveGunRight(evt: Event){
if (mcGunship.x <= 530){
mcGunship.x += 10;
} else {
mcGunship.x = 530;
}
trace("moveGunRight() is called");
} //eof moveGunRight()
function addAnim(xPos:Number, yPos:Number){
var anim: AlienHitAnimation;
anim = new AlienHitAnimation();
addChild(anim);
anim.gotoAndPlay(1);
anim.x = xPos;
anim.y = yPos;
anim.name = "anim";
animArray.push(anim);
var animTimer : Timer = new Timer(100);
animTimer.start();
animTimer.addEventListener(TimerEvent.TIMER_COMPLETE, removeAnim);
trace("addAnim completed.");
} //eof addAnimation()
function moveBullets(evt:Event){
if(bulletArray.length >0){
for(j =0; j <bulletArray.length; j++){
if (bulletArray[j].y <= -10){
//mcBullet.removeEventListener(Event.ENTER_FRAME, flyBullet);
bulletArray[j].parent.removeChild(bulletArray[j]);
bulletArray.splice(j,1);
} else {
bulletArray[j].y -= bulletSpeed;
}
if(spaceshipFlying == true){
if (bulletArray[j].hitTestObject(alienSpaceship)){
score += 100;
tScore.text = score.toString();
playExplosionSound();
bulletArray[j].parent.removeChild(bulletArray[j]);
bulletArray.splice(j,1);
alienSpaceship.removeEventListener(Event.ENTER_FRAME, moveSpaceship);
alienSpaceship.parent.removeChild(alienSpaceship);
spaceshipFlying = false;
alienSpaceship.x =-40;
}
}
for (i = 0 ; i <alienArray.length; i++){
if (bulletArray[j].hitTestObject(alienArray[i])){
score +=10;
tScore.text = score.toString();
playHitSound();
addAnim(alienArray[i].x, alienArray[i].y );
trace("addAnim called.");
bulletArray[j].parent.removeChild(bulletArray[j]);
bulletArray.splice(j,1);
alienArray[i].parent.removeChild(alienArray[i]);
alienArray.splice(i,1);
trace("alienArray spliced.");
if(alienArray.length == 0) {
clearAll();
//endGame();
tMessage.text = "LEVEL " + level + " COMPLETE!";
level ++;
btnNextLevel.visible = true;
btnNextLevel.enabled = true;
btnNextLevel.addEventListener(MouseEvent.CLICK, restartGame);
break;
}
}
}
}
}
// trace("moveBullets() is called");
} //eof flyBullet()
function restartGame(evt:Event){
if(lives == -1){
gotoAndStop(3);
} else {
setLevel();
}
trace("restartGame() is called");
} //eof restartGame()
function alienMoveRight(evt: TimerEvent ){
if(alienArray.length == 0){
endGame();
}
for(i = 0; i < enemyNumInARow; i++){
trackerArray[i].x += alienSpeed;
}
for(i = 0; i <alienArray.length; i++){
alienArray[i].x += alienSpeed;
if(mcBottomLine.hitTestObject(alienArray[i]) || alienArray[i].y >=480){
endGame();
break;
}
// trace("trackerArray[0].x " + trackerArray[0].x);
// trace("trackerArray[9].x " + trackerArray[9].x);
if(trackerArray[9].x >= (stage.width -10)) {
alienArray[i].y += yIncrement;
enemyTimer.removeEventListener(TimerEvent.TIMER, alienMoveRight);
enemyTimer.addEventListener(TimerEvent.TIMER, alienMoveLeft);
enemyTimer.start();
}
}
} //eof alienMoveRight()
function alienMoveLeft(evt: TimerEvent){
if(alienArray.length == 0){
endGame();
}
for(i= 0; i < enemyNumInARow; i++){
trackerArray[i].x -= alienSpeed;
}
for(i = 0; i <alienArray.length; i++){
alienArray[i]. x -= alienSpeed;
if(mcBottomLine.hitTestObject(alienArray[i]) || alienArray[i].y >=480){
endGame();
break;
}
// trace("trackerArray[0].x " + trackerArray[0].x);
// trace("trackerArray[9].x " + trackerArray[9].x);
if(trackerArray[0].x <= 10) {
alienArray[i].y += yIncrement;
enemyTimer.removeEventListener(TimerEvent.TIMER, alienMoveLeft);
enemyTimer.addEventListener(TimerEvent.TIMER, alienMoveRight);
}
}
} //eof alienMoveLeft()
function endGame(){
clearAll();
trace("calearAll() is called.");
tMessage.text = "SORRY!";
lives --;
if(lives>0) {
btnTryAgain.enabled = true;
btnTryAgain.visible = true;
btnTryAgain.addEventListener(MouseEvent.CLICK, restartGame);
mcLives.gotoAndStop(lives);
} else if (lives ==0){
mcLives.alpha =0;
btnTryAgain.enabled = true;
btnTryAgain.visible = true;
btnTryAgain.addEventListener(MouseEvent.CLICK, restartGame);
}else if (lives<=-1){
gotoAndStop(3);
}
trace("endGame has finished.");
} //eof endGame()
function clearAll(){
if(bulletArray != null){
if(bulletArray.length >0){
for (i = 0; i < bulletArray.length; i++){
bulletArray[i].parent.removeChild(bulletArray[i]);
}
}
}
if(spaceshipFlying == true){
spaceshipFlying = false;
if(alienSpaceship.hasEventListener(Event.ENTER_FRAME)){
alienSpaceship.removeEventListener(Event.ENTER_FRAME, moveSpaceship );
}
if(spaceshipTimer.hasEventListener(TimerEvent.TIMER)){
spaceshipTimer.removeEventListener(TimerEvent.TIMER, moveSpaceship);
}
alienSpaceship.parent.removeChild(alienSpaceship);
}
trace("Flying? " + spaceshipFlying );
if(alienArray != null){
if (alienArray.length >0) {
for (i =0 ; i <alienArray.length; i++){
alienArray[i].parent.removeChild(alienArray[i]);
}
}
}
if(trackerArray != null){
for (i = 0; i <10; i++){
trackerArray[i].parent.removeChild(trackerArray[i]);
}
}
if (mcGunship != null){
mcGunship.parent.removeChild(mcGunship);
}
// trace("alienArray - clearALL() " + alienArray.length);
if(this.hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, moveBullets);
}
if (stage.hasEventListener(KeyboardEvent.KEY_DOWN)){
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
}
if(stage.hasEventListener(KeyboardEvent.KEY_UP)){
stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
}
trace("removed three listeners");
if(mcGunship.hasEventListener(Event.ENTER_FRAME)){
mcGunship.removeEventListener(Event.ENTER_FRAME, moveGunLeft);
}
if(mcGunship.hasEventListener(Event.ENTER_FRAME)){
mcGunship.removeEventListener(Event.ENTER_FRAME, moveGunRight);
}
trace("removed gunship listeners");
if(enemyTimer != null && enemyTimer.hasEventListener(TimerEvent.TIMER)){
enemyTimer.removeEventListener(TimerEvent.TIMER, alienMoveRight);
}
if(enemyTimer != null && enemyTimer.hasEventListener(TimerEvent.TIMER)){
enemyTimer.removeEventListener(TimerEvent.TIMER, alienMoveLeft);
}
trace("removed gunship listeners");
if(spaceshipTimer != null){
spaceshipTimer.stop();
spaceshipTimer = null;
}
if(enemyTimer != null){
enemyTimer.stop();
enemyTimer = null;
}
trace("clearAll() stops timers ");
if(mcGunship != null){
mcGunship = null;
}
if(alienArray != null){
alienArray = null;
}
if(trackerArray != null){
trackerArray =null;
}
if(bulletArray != null){
bulletArray = null;
}
if(alienSpaceship != null){
alienSpaceship = null;
}
} //eof clearAll()
function playFiringSound(){
var s:Sound = new Sound(new URLRequest("firing.mp3"));
soundChannel = s.play();
}
function playHitSound(){
var s:Sound = new Sound(new URLRequest("hit.mp3"));
soundChannel = s.play();
}
function playExplosionSound(){
var s:Sound = new Sound(new URLRequest("explosion.mp3"));
soundChannel = s.play();
}
function removeAnim(evt:TimerEvent){
anim.parent.removeChild(anim);
animArray.splice(0,1);
anim = null;
trace("removeAnimation is complete");
}
|