I had something in mind like the following code. Test it, and if you like it, check the attached .zip file for a more structured version with commentry!!
It took me about an hour to make this, so I hope this is what you are looking for. I know I let my imagination run wild, but theres enough left for you to do. Have fun, and let me know what you think.
Gr Eric 
// ************************* //
// DEFINE CONSTANT VARIABLES //
// ************************* //
Stage = {width: Stage.width, height: Stage.height};
bullet_fps = 200;
bullet_maxn = 5;
alien_space = 20;
alien_rows = 3;
alien_cols = 9;
// ************************* //
// CREATE STATIC OBJECTS //
// ************************* //
//____________ Object #1: The ship!
_root.createEmptyMovieClip("fighter", ++d).beginFill(0x000000, 100);
fighter.c = [
{x: 0, y: 0},
{x: 5, y: 15},
{x: -5, y: 15},
{x: 0, y: 0}
];
//____________ Object #2: The bullet!
_root.createEmptyMovieClip("bullet", ++d).lineStyle(2, 0x000000, 100);
_root.bullet.lineTo(0.5, 0.5); _root.bullet._visible = false;
//____________ Object #3: The invader!
_root.createEmptyMovieClip("invader", ++d).beginFill(0x000000, 100);
invader.c = [
{x: 0, y: -10},
{x: 10, y: -10},
{x: 10, y: -20},
{x: 16, y: -14},
{x: 16, y: -10},
{x: 20, y: -10},
{x: 10, y: 0},
{x: 8, y: 10},
{x: 8, y: 2},
{x: 0, y: 0},
{x: -8, y: 2},
{x: -8, y: 10},
{x: -10, y: 0},
{x: -20, y: -10},
{x: -16, y: -10},
{x: -16, y: -14},
{x: -10, y: -20},
{x: -10, y: -10},
{x: -10, y: -10}
];
//____________ Object #3: The scoreboard!
_root.createTextField("score", ++d,Stage.width-50,Stage.height-30,50,30);
score.text = "0";
// ************************* //
// CREATE CLASSES //
// ************************* //
//____________ Object #1: The key processor!
key_processor = new Object();
//____________ Object #2: The bullet processor!
bullets = new Object();
bullets.onstage = new Array();
// ************************* //
// FUNCTIONS & PROTOTYPES //
// ************************* //
Array.prototype.removeItem = function(item)
{
for (var n = 0; n<this.length; n++)
{
if (this[n] == item)
{
this.splice(n, 1);
return;
}
}
};
MovieClip.prototype.drawPoints = function( points )
{
this.moveTo(points[0].x, points[0].y);
for (i=1; i<points.length; i++)
this.lineTo(points*.x, points*.y);
};
// ************************* //
// DEFINE CLASSES //
// ************************* //
// BULLETS CLASS - BULLETS CLASS - BULLETS CLASS - BULLETS CLASS - BULLETS CLASS - BULLETS CLASS
bullets.onEnterFrameEvent = function(src)
{
if (src._y < 0)
{
_root.score.text = Number(_root.score.text) - 1;
this.kill(src);
}
src._y--;
updateAfterEvent();
}
bullets.kill = function(src)
{
clearInterval(src.interval);
this.onstage.removeItem(src);
src.removeMovieClip();
}
bullets.fire = function()
{
if (this.onstage.length >= bullet_maxn)
{
this.kill(this.onstage[0]);
//this.onstage.shift();
}
b = _root.bullet.duplicateMovieClip("bullet" + d, ++d, {_visible: true, _x: fighter._x, _y: fighter._y});
b.interval = setInterval(this, "onEnterFrameEvent", 1000/(bullet_fps+2), b);
this.onstage.push(b);
}
// FIGHTER CLASS - FIGHTER CLASS - FIGHTER CLASS - FIGHTER CLASS - FIGHTER CLASS - FIGHTER CLASS
fighter.create = function()
{
this.drawPoints(this.c);
this.interval = setInterval( this, "onEnterFrameEvent", 25);
this._y = Stage.height - this._height;
this._x = Stage.width / 2;
}
fighter.onEnterFrameEvent = function()
{
if (Key.isDown(Key.LEFT)) x_speed -= 0.2;
if (Key.isDown(Key.RIGHT)) x_speed += 0.2;
this._x += x_speed;
x_speed *= 0.96;
updateAfterEvent();
}
// INVADER CLASS - INVADER CLASS - INVADER CLASS - INVADER CLASS - INVADER CLASS - INVADER CLASS
invader.create = function()
{
this.drawPoints(this.c);
this._visible = false;
}
invader.draw = function(x,y,h)
{
if (!h) h = 1;
b = this.duplicateMovieClip("invader" + d, ++d, {_visible: true, _x: x, _y: y});
b.shield = h;
b.hitsleft = h;
b.interval = setInterval(this, "onEnterFrameEvent", 25, b);
this.onstage.push(b);
}
invader.kill = function(src)
{
_root.score.text = Number(_root.score.text) + (src.shield * 10);
clearInterval(src.interval);
this.onstage.removeItem(src);
src.removeMovieClip();
}
invader.onEnterFrameEvent = function(src)
{
for(i=0; i<bullets.onstage.length; i++)
{
if (src.hitTest(bullets.onstage*._x, bullets.onstage*._y))
{
_root.score.text = Number(_root.score.text) +2;
bullets.kill(bullets.onstage*);
src._alpha -= 100/src.shield;
src.hitsleft--;
if (src.hitsleft == 0) this.kill(src);
}
}
updateAfterEvent();
}
// KEY CLASS - KEY CLASS - KEY CLASS - KEY CLASS - KEY CLASS - KEY CLASS - KEY CLASS - KEY CLASS
key_processor.onKeyDown = function()
{
pressed_key = Key.getCode();
switch (pressed_key)
{
case 32: // SPACE
bullets.fire();
break;
}
};
Key.addListener(key_processor);
fighter.create();
invader.create();
for(y=0; y<alien_rows; y++)
for (x=0; x<alien_cols; x++)
{
xpos = 35 + (x*(alien_space+invader._width));
ypos = 35 + (y*(alien_space+invader._height));
invader.draw( xpos,ypos, alien_rows-y );
}