# \[AS3\] enemy array

**URL:** <https://forum.kirupa.com/t/as3-enemy-array/325964>\
**Category:** programming\
**Created:** [November 14, 2011, 6:22pm UTC](https://forum.kirupa.com/t/as3-enemy-array/325964 "2011-11-14T18:22:23Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![kestor](https://avatars.discourse-cdn.com/v4/letter/k/13edae/32.png) [@kestor](https://forum.kirupa.com/u/kestor)\
**Post date:** [November 14, 2011, 6:22pm UTC](https://forum.kirupa.com/t/as3-enemy-array/325964/1 "2011-11-14T18:22:23Z")

</div>

Hello there.  
I know close to nothing about arrays.  
What im trying to do is push the enemies into an array and from enemy class the HP of enemys comes.  
But after 2-3 hours of trying, the second enemy spawns and first dissapears without taking damage.

This is the code from main timeline:

```auto

stop();
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.display.Sprite;
import fl.motion.DynamicMatrix;
import flashx.textLayout.accessibility.TextAccImpl;
import flash.display.Sprite;
import flash.display.Shape;
import flash.ui.Mouse;
import flash.events.MouseEvent;
import flash.events.TimerEvent;

var Enemy1MC=MovieClip;
Enemy1MC=new Enemy11();

var enemy1Array;
enemy1Array=new Array();

addEventListener(Event.ENTER_FRAME, enemy1array)
function enemy1array(event:Event):void
{
    for(var i=0; i<enemy1Array.length; i++)
    {
        enemy1Array*.push(Enemy1MC);
    }
}

var enemy1Timer:Timer;
enemy1Timer=new Timer(2000,1);
enemy1Timer.addEventListener(TimerEvent.TIMER, enemy1spawn);
enemy1Timer.start();

function enemy1spawn(event:TimerEvent):void
{
    Enemy1MC.x=200;
    Enemy1MC.y=135;
    addChildAt(Enemy1MC, 5);
    Enemy1MC.scaleX=25/100;
    Enemy1MC.scaleY=25/100;
    Enemy1MC.gotoAndPlay(1);
}

var enemy1Timer2:Timer;
enemy1Timer2=new Timer(5000,1);
enemy1Timer2.addEventListener(TimerEvent.TIMER, enemy1spawn2);
enemy1Timer2.start();

function enemy1spawn2(event:TimerEvent):void
{
    Enemy1MC.x=400;
    Enemy1MC.y=200;
    addChildAt(Enemy1MC, 5);
    Enemy1MC.scaleX=25/100;
    Enemy1MC.scaleY=25/100;
    Enemy1MC.gotoAndPlay(1);
}

```

So after 5 seconds the second “enemy1” appears but the first one disappears ☹ like they arent in any array.

I also have a problem that i checked (when i hit CTRL-ENTER) is that if i damage one enemy the second one that spawns start from the hp left from first one.

The damage code i have writen in the enemy class file:

```auto

package  
{
    
    
    import flash.events.KeyboardEvent;
    import flash.events.Event;
    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.display.Sprite;
    import fl.motion.DynamicMatrix;
    import flashx.textLayout.accessibility.TextAccImpl;
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.ui.Mouse;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;

    
    
    public class Enemy11 extends MovieClip 
    {
        var _root:Object;
        var Enemy1HP:Number=15;
        var weapon1DMG:Number=5;
        var weapon2DMG:Number=3;
        var fistDMG:Number=50;

        
        
        public function Enemy11() 
        {
            addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }
        private function onAdded(event:Event):void
        {
            gotoAndStop(1);
            _root=MovieClip(root);
            addEventListener(Event.ENTER_FRAME, DamageTaken);

        }
        public function DamageTaken(event:Event):void
        {
            trace(Enemy1HP);
            if(this.currentFrame<47)
            {
                this.scaleX=25/100 + this.currentFrame/50;
                this.scaleY=25/100 + this.currentFrame/50;
            }
            if(_root.weapon1==true)
            {
                if(this.hitTestPoint(_root.aim.x, _root.aim.y, true) && _root.aim.currentFrame==7 ||this.hitTestPoint(_root.aim.x, _root.aim.y, true) && _root.aim.currentFrame==13 ||this.hitTestPoint(_root.aim.x, _root.aim.y, true) && _root.aim.currentFrame==19)
                {
                    Enemy1HP-=weapon1DMG;
                }
            }
            if(_root.weapon2==true)
            {
                if(this.hitTestPoint(_root.aim.x, _root.aim.y, true) && _root.aim.currentFrame==27 ||this.hitTestPoint(_root.aim.x, _root.aim.y, true) && _root.aim.currentFrame==35 ||this.hitTestPoint(_root.aim.x, _root.aim.y, true) && _root.aim.currentFrame==43)
                {
                    Enemy1HP-=weapon2DMG;
                }
            }
            if(_root.fist.currentFrame==3)
            {
                Enemy1HP-=fistDMG;
            }
            if(Enemy1HP<0)
            {
                Enemy1HP=0;
                this.gotoAndPlay(61);
            }
            if(this.currentFrame==72)
            {
                parent.removeChild(this);
            }
            if(this.currentFrame==60)
            {
                this.gotoAndPlay(48);
            }
        }
    }
}

```

I figure if the enemies are pushed correctly into an array the HP of enemies will be solved by itself but im not sure.  
Thanks in advance for any response.
