Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Removing enemies. Can't get it right.

Explorer ,
Apr 11, 2013 Apr 11, 2013

Well. I've been working on this since I added a second level to my game. When you go from level 1 and level 2 and did not kill all enemies on stage. They stay on stage and the new enemies (I believe I removed this temporarly) are added on top of the old.

The enemies in my game are stored in an array called enemyList. I've tried emptying it, but it didn't work. I've tried every method that I could think of, so I came to the forums.

My current game code (Doesn't include the class files for Enemy, Bumper and Bullet):

import flash.geom.Point;

stop();

var leftPressed:Boolean = false;

var rightPressed:Boolean = false;

var upPressed:Boolean = false;

var downPressed:Boolean = false;

var leftBumping:Boolean = false;

var rightBumping:Boolean = false;

var upBumping:Boolean = false;

var downBumping:Boolean = false;

var leftBumpPoint:Array = new Array(leftBumpPoint1, leftBumpPoint2, leftBumpPoint3);

var leftBumpPoint1:Point = new Point(-30, -55);

var leftBumpPoint2:Point = new Point(-30, 0);

var leftBumpPoint3:Point = new Point(-30, -116.5);

var rightBumpPoint:Point = new Point(30, -55);

var upBumpPoint:Point = new Point(0, -120);

var downBumpPoint:Point = new Point(0, 0);

var scrollX:Number = 0;

var scrollY:Number = 500;

var xSpeed:Number = 0;

var ySpeed:Number = 0;

var speedConstant:Number = 4;

var frictionConstant:Number = 0.9;

var gravityConstant:Number = 1.8;

var jumpConstant:Number = -35;

var maxSpeedConstant:Number = 18;

var doubleJumpReady:Boolean = false;

var upReleasedInAir:Boolean = false;

var keyCollected:Boolean = false;

var doorOpen:Boolean = false;

var currentLevel:int = 1;

var pScore:int = 0;

var lives:int = 10;

var animationState:String = "idle";

var bulletList:Array = new Array();

var enemyList:Array = new Array();

var bumperList:Array = new Array();

keyStat.visible = false;

keyStat.stop();

doorStat.x = 6.66;

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);

stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);

stage.addEventListener(Event.ENTER_FRAME, loop);

addEnemiesToLevel();

lifeTxt.text=String(lives);

scoreTxt.text=String(pScore);

function addEnemiesToLevel():void

{

          if(currentLevel == 1){

                    addEnemy(620, -115);

                    addBumper(500, -115);

                    addBumper(740, -115);

 

                    addEnemy(900, -490);

                    addBumper(380, -490);

                    addBumper(1020, -490);

 

                    addEnemy(2005, -115);

                    addBumper(2125, -115);

                    addBumper(1885, -115);

 

                    addEnemy(1225, -875);

                    addBumper(1345, -875);

                    addBumper(1105, -875);

          }

          if(currentLevel == 2){

                    addEnemy(2005, -115);

                    addBumper(2125, -115);

                    addBumper(1885, -115);

          }

}

function loop(e:Event):void{

          if(back.collisions.hitTestPoint(player.x + leftBumpPoint.x, player.y + leftBumpPoint.y, true)){

                    leftBumping = true;

          } else {

                    leftBumping = false;

          }

          if(back.collisions.hitTestPoint(player.x + rightBumpPoint.x, player.y + rightBumpPoint.y, true)){

                    rightBumping = true;

          } else {

                    rightBumping = false;

          }

 

          if(back.collisions.hitTestPoint(player.x + upBumpPoint.x, player.y + upBumpPoint.y, true)){

                    upBumping = true;

          } else {

                    upBumping = false;

          }

 

          if(back.collisions.hitTestPoint(player.x + downBumpPoint.x, player.y + downBumpPoint.y, true)){

                    downBumping = true;

          } else {

                    downBumping = false;

          }

 

          if(leftPressed){

                    xSpeed -= speedConstant;

                    player.scaleX = -1;

          } else if(rightPressed){

                    xSpeed += speedConstant;

                    player.scaleX = 1;

          }

          if(leftBumping){

                    if(xSpeed < 0){

                              xSpeed *= -0.5;

                    }

          }

 

          if(rightBumping){

                    if(xSpeed > 0){

                              xSpeed *= -0.5;

                    }

          }

 

          if(upBumping){

                    if(ySpeed < 0){

                              ySpeed *= -0.5;

                    }

          }

 

          if(downBumping){

                    if(ySpeed > 0){

                              ySpeed = 0;

                    }

                    if(upPressed){

                              ySpeed = jumpConstant;

                    }

 

                    //DOUBLE JUMP

                    if(upReleasedInAir == true){

                              upReleasedInAir = false;

                    }

                    if(doubleJumpReady == false){

                              doubleJumpReady = true;

                    }

          } else {

 

                    ySpeed += gravityConstant;

 

                    //DOUBLE JUMP

                    if(upPressed == false && upReleasedInAir == false){

                              upReleasedInAir = true;

                    }

                    if(doubleJumpReady && upReleasedInAir){

                              if(upPressed){

                                        doubleJumpReady = false;

                                        ySpeed = jumpConstant;

                              }

                    }

 

          }

 

          if(keyCollected == false){

                    if(player.hitTestObject(back.other.doorKey)){

                              back.other.doorKey.visible = false;

                              keyCollected = true;

                              keyStat.visible = true;

                              doorStat.x = 41.95;

                              trace("key collected");

                    }

          }

 

          if(doorOpen == false){

                    if(keyCollected == true){

                              if(player.hitTestObject(back.other.lockedDoor)){

                                        back.other.lockedDoor.gotoAndStop(2);

                                        doorOpen = true;

                                        keyStat.visible = false;

                                        doorStat.x = 6.66;

                                        doorStat.gotoAndStop(2);

                                        trace("door open");

                              }

                    }

          }

                                                                                                              

 

          if(xSpeed > maxSpeedConstant){ //moving right

                    xSpeed = maxSpeedConstant;

          } else if(xSpeed < (maxSpeedConstant * -1)){ //moving left

                    xSpeed = (maxSpeedConstant * -1);

          }

 

          xSpeed *= frictionConstant;

          ySpeed *= frictionConstant;

 

          if(Math.abs(xSpeed) < 0.5){

                    xSpeed = 0;

          }

 

          scrollX -= xSpeed;

          scrollY -= ySpeed;

          back.x = scrollX;

          back.y = scrollY;

 

          sky.x = scrollX * 0.2;

          sky.y = scrollY * 0.2;

 

          if( ( leftPressed || rightPressed || xSpeed > speedConstant || xSpeed < speedConstant *-1 ) && downBumping){

                    animationState = "running";

          } else if(downBumping){

                    animationState = "idle";

          }/** else if(doubleJumpReady && upReleasedInAir){

                              if(upPressed){

                                        animationState = "double";

                              }

          }**/ else {

                    animationState = "jumping";

          }

 

          if(player.currentLabel != animationState){

                    player.gotoAndStop(animationState);

          }

 

 

          if (enemyList.length > 0)

          {

                    for (var i:int = 0; i < enemyList.length; i++)

                    {

                              if (bulletList.length > 0)

                              {

                                        for (var j:int = 0; j < bulletList.length; j++)

                                        {

                                                  if ( enemyList.hitTestObject(bulletList) )

                                                  {

                                                            trace("Killed Enemy");

                                                            pScore += 10;

                                                            scoreTxt.text=String(pScore);

                                                            enemyList.removeSelf();

                                                            bulletList.removeSelf();

                                                  }

                                        }

                              }

                    }

          }

          if (enemyList.length > 0){

              for (var k:int = 0; k < enemyList.length; k++){

                  if (bumperList.length > 0){

                      for (var h:int = 0; h < bumperList.length; h++){

                          if ( enemyList.hitTestObject(bumperList) ){

                              enemyList.changeDirection();

                        }

                    }

                }

            }

        }

          if (enemyList.length > 0){

              for (var m:int = 0; m < enemyList.length; m++){

                  if ( enemyList.hitTestObject(player) ){

                                        trace("Player Got Killed");

                                        scrollX = 0;

                                        scrollY = 500;

                                        lives -= 1;

                                        lifeTxt.text=String(lives);

                              }

                    }

          }

          if (lives == 0){

                              stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);

                              stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);

                              stage.removeEventListener(Event.ENTER_FRAME, loop);

                              gotoAndStop("gameOver");

             if(yourLevel <= currentLevel){

                       mySO.data.myLevel = yourLevel;

                              mySO.flush();

             }else{

                       trace("You already beat this level");

             }

          }

 

}

var maxLevel:int = back.collisions.totalFrames;

function nextLevel():void{

          currentLevel++;

          doorStat.gotoAndStop(1);

          if(yourLevel <= currentLevel){

                    mySO.data.myLevel = yourLevel;

                    mySO.flush();

          }else{

                    trace("You already beat this level");

          }

          trace("Next Level: " + currentLevel);

             gotoNextLevel();

             if(currentLevel > maxLevel){

                              stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);

                              stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);

                              stage.removeEventListener(Event.ENTER_FRAME, loop);

                              gotoAndStop("gameOver");

             }

}

function removeEnemy():void

{

          /**if(currentLevel == 1){

          }**/

}

function gotoNextLevel():void{

          removeEnemy();

          back.other.gotoAndStop(currentLevel);

          back.visuals.gotoAndStop(currentLevel);

          back.collisions.gotoAndStop(currentLevel);

          scrollX = 0;

          scrollY = 500;

          keyCollected = false;

          back.other.doorKey.visible = true;

          doorOpen = false;

          back.other.lockedDoor.gotoAndStop(1);

}

function keyDownHandler(e:KeyboardEvent):void{

          if(e.keyCode == Keyboard.LEFT){

                    leftPressed = true;

 

          } else if(e.keyCode == Keyboard.RIGHT){

                    rightPressed = true;

 

          } else if(e.keyCode == Keyboard.UP){

                    upPressed = true;

 

          } else if(e.keyCode == Keyboard.DOWN){

                    downPressed = true;

                    if(doorOpen && player.hitTestObject(back.other.lockedDoor)){

                              nextLevel();

                    }

          }

}

function keyUpHandler(e:KeyboardEvent):void{

          if(e.keyCode == Keyboard.LEFT){

                    leftPressed = false;

 

          } else if(e.keyCode == Keyboard.RIGHT){

                    rightPressed = false;

 

          } else if(e.keyCode == Keyboard.UP){

                    upPressed = false;

 

          } else if(e.keyCode == Keyboard.DOWN){

                    downPressed = false;

          }

 

          if(e.keyCode == Keyboard.SPACE){

                    fireBullet();

          }

}

function fireBullet():void

{

          var playerDirection:String;

          if(player.scaleX < 0){

                    playerDirection = "left";

          } else if(player.scaleX > 0){

                    playerDirection = "right";

          }

          var bullet:Bullet = new Bullet(player.x - scrollX, player.y - scrollY, playerDirection, xSpeed);

          back.addChild(bullet);

 

          bullet.addEventListener(Event.REMOVED, bulletRemoved);

          bulletList.push(bullet);

 

}

function bulletRemoved(e:Event):void

{

          e.currentTarget.removeEventListener(Event.REMOVED, bulletRemoved);

          bulletList.splice(bulletList.indexOf(e.currentTarget), 1);

}

function addEnemy(xLocation:int, yLocation:int):void

{

          var enemy:Enemy = new Enemy(xLocation, yLocation);

          back.addChild(enemy);

          enemy.addEventListener(Event.REMOVED, enemyRemoved);

          enemyList.push(enemy);

}

function addBumper(xLocation:int, yLocation:int):void

{

          var bumper:Bumper = new Bumper(xLocation, yLocation);

          back.addChild(bumper);

          bumper.visible = false;

          bumperList.push(bumper);

}

function enemyRemoved(e:Event):void

{

          e.currentTarget.removeEventListener(Event.REMOVED, enemyRemoved);

          enemyList.splice(enemyList.indexOf(e.currentTarget), 1);

}

TOPICS
ActionScript
755
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Apr 11, 2013 Apr 11, 2013

if enemyList is the array containing all enemies, you can use the following to remove all enemies:

function removeAllEnemies():void{

for(var i:int=enemyList.length-1;i>=0;i--){

// remove listeners for enemyList here

enemyList.parent.removeChild(enemyList);

}

enemyList.length=0;

}

Translate
Community Expert ,
Apr 11, 2013 Apr 11, 2013

where's the code for removing all the enemies when a level ends?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Apr 11, 2013 Apr 11, 2013

Currently it's out of order.

But I have this:

function removeEnemy():void {           /**if(currentLevel == 1){             }**/ }

and it's called in the gotoNextLevel function.

I tried using bits of the code that removes enemies when a bullet hits them. But that didn't work.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 11, 2013 Apr 11, 2013

if enemyList is the array containing all enemies, you can use the following to remove all enemies:

function removeAllEnemies():void{

for(var i:int=enemyList.length-1;i>=0;i--){

// remove listeners for enemyList here

enemyList.parent.removeChild(enemyList);

}

enemyList.length=0;

}

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Apr 11, 2013 Apr 11, 2013

Oh my god it worked.

Thank you so much.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 11, 2013 Apr 11, 2013
LATEST

you're welcome.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines