title: random enemies in vertical shooter AS3
body: <p>I have a vertical shooter game I'm working on. I need to find a way to make random objects(enemies) drop down from the top. At the moment I've got 1 enemy that drops down randomly from the top which is working. here is the code I'm using.</p>
  
  <p>Main code</p>
  
  <pre><code>// Full Screen Command
  fscommand("fullscreen","true");
  stop();
  
  //center player on screen
  mcMain.x = 880,45;
  mcMain.y = 940,40;
  
  //these booleans will check which keys are down
  var leftDown:Boolean = false;
  var upDown:Boolean = false;
  var rightDown:Boolean = false;
  var downDown:Boolean = false;
  //how fast the character will be able to go
  var mainSpeed:int = 25;
  
  //how much time before allowed to shoot again
  var cTime:int = 0;
  //the time it has to reach in order to be allowed to shoot (in frames)
  var cLimit:int = 12;
  //whether or not the user is allowed to shoot
  var shootAllow:Boolean = true;
  
  //how much time before another enemy is made
  var enemyTime:int = 0;
  //how much time needed to make an enemy
  //it should be more than the shooting rate
  //or else killing all of the enemies would
  //be impossible :O
  var enemyLimit:int = 16;
  
  //the player's score
  var score:int = 0; 
  
  //this movieclip will hold all of the bullets
  var bulletContainer:MovieClip = new MovieClip();
  addChild(bulletContainer);
  
  //whether or not the game is over
  var gameOver:Boolean = false;
  
  //adding a listener to mcMain that will move the character
  mcMain.addEventListener(Event.ENTER_FRAME, moveChar);
  function moveChar(event:Event):void{
  //checking if the key booleans are true then moving
  //the character based on the keys
  if(leftDown){
      mcMain.x -= mainSpeed;
  }
  if(upDown){
      mcMain.y -= mainSpeed;
  }
  if(rightDown){
      mcMain.x += mainSpeed;
  }
  if(downDown){
      mcMain.y += mainSpeed;
  }
  //keeping the main character within bounds
  if(mcMain.x &lt;= 0){
      mcMain.x += mainSpeed;
  }
  if(mcMain.y &lt;= 0){
      mcMain.y += mainSpeed;
  }
  if(mcMain.x &gt;= stage.stageWidth - mcMain.width){
      mcMain.x -= mainSpeed;
  }
  if(mcMain.y &gt;= stage.stageHeight - mcMain.height){
      mcMain.y -= mainSpeed;
  }
  
      //Incrementing the cTime
  
  //checking if cTime has reached the limit yet
  if(cTime &lt; cLimit){
      cTime ++;
  } else {
      //if it has, then allow the user to shoot
      shootAllow = true;
      //and reset cTime
      cTime = 0;
  }
  //adding enemies to stage
  if(enemyTime &lt; enemyLimit){
      //if time hasn't reached the limit, then just increment
      enemyTime ++;
  } else {
  //defining a variable which will hold the new enemy
  var newEnemy = new Enemy();
  //making the enemy offstage when it is created
  newEnemy.y = -1 * newEnemy.height;
  //making the enemy's x coordinates random
  //the "int" function will act the same as Math.floor but a bit faster
  newEnemy.x = int(Math.random()*(stage.stageWidth - newEnemy.width));
  //then add the enemy to stage
  addChild(newEnemy);
  //and reset the enemyTime
  enemyTime = 0;
  }
  //updating the score text
  txtScore.text = 'SCORE: '+score;
  }
  //this listener will listen for down keystrokes
  stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown);
  function checkKeysDown(event:KeyboardEvent):void{
  //making the booleans true based on the keycode
  //WASD Keys or arrow keys
  if(event.keyCode == 37 || event.keyCode == 65){
      leftDown = true;
  }
  if(event.keyCode == 39 || event.keyCode == 68){
      rightDown = true;
  }
  
  //checking if the space bar is pressed and shooting is allowed
  if(event.keyCode == 32 &amp;&amp; shootAllow){
  //making it so the user can't shoot for a bit
  shootAllow = false;
  //declaring a variable to be a new Bullet
  var newBullet:Bullet = new Bullet();
  //changing the bullet's coordinates
  newBullet.x = mcMain.x + mcMain.width/2 - newBullet.width/2;
  newBullet.y = mcMain.y;
  //then we add the bullet to stage
  bulletContainer.addChild(newBullet);
  mcMain.gotoAndPlay(1);
  }
  }
  //this listener will listen for keys being released
  stage.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp);
  function checkKeysUp(event:KeyboardEvent):void{
  //making the booleans false based on the keycode
  if(event.keyCode == 37 || event.keyCode == 65){
      leftDown = false;
  }
  if(event.keyCode == 39 || event.keyCode == 68){
      rightDown = false;
  }
  
  }
  </code></pre>
  
  <p>enemy class</p>
  
  <pre><code>package{
  //we have to import certain display objects and events
  import flash.display.MovieClip;
  import flash.events.*;
  //this just means that Enemy will act like a MovieClip
  public class Enemy extends MovieClip{
      //VARIABLES
      //this will act as the root of the document
      //so we can easily reference it within the class
      private var _root:Object;
      //how quickly the enemy will move
      private var speed:int = 5;
      //this function will run every time the Bullet is added
      //to the stage
      public function Enemy(){
          //adding events to this class
          //functions that will run only when the MC is added
          addEventListener(Event.ADDED, beginClass);
          //functions that will run on enter frame
          addEventListener(Event.ENTER_FRAME, eFrame);
      }
      private function beginClass(event:Event):void{
          _root = MovieClip(root);
      }
      private function eFrame(event:Event):void{
          //moving the bullet up screen
          y += speed;
          //making the bullet be removed if it goes off stage
          if(this.y &gt; stage.stageHeight){
              removeEventListener(Event.ENTER_FRAME, eFrame);
              _root.removeChild(this);
          }
          //checking if it is touching any bullets
          //we will have to run a for loop because there will be multiple bullets
          for(var i:int = 0;i&lt;_root.bulletContainer.numChildren;i++){
              //numChildren is just the amount of movieclips within 
              //the bulletContainer.
  
              //we define a variable that will be the bullet that we are currently
              //hit testing.
              var bulletTarget:MovieClip = _root.bulletContainer.getChildAt(i);
  
              //now we hit test
              if(hitTestObject(bulletTarget)){
                  //remove this from the stage if it touches a bullet
                  removeEventListener(Event.ENTER_FRAME, eFrame);
                  _root.removeChild(this);
                  //also remove the bullet and its listeners
                  _root.bulletContainer.removeChild(bulletTarget);
                  bulletTarget.removeListeners();
                  //up the score
                  _root.score += 5;
              }
          }
  
          //hit testing with the user
          if(hitTestObject(_root.deadLine)){
              //losing the game
              _root.gameOver = true;
              _root.gotoAndStop('lose');
          }
  
          //checking if game is over
          if(_root.gameOver){
              removeEventListener(Event.ENTER_FRAME, eFrame);
              this.parent.removeChild(this);
          }
  
      }
  }
  }
  </code></pre>
  
  <p>I'm using the tutorial from here : <a href="http://www.flashgametuts.com/tutorials/as3/how-to-make-a-vertical-shooter-in-as3-part-1/" rel="nofollow">http://www.flashgametuts.com/tutorials/as3/how-to-make-a-vertical-shooter-in-as3-part-1/</a></p>
  
  <p>any help is much appriciated.</p>