Frame 1
var blur = (new flash.filters.BlurFilter(2, 2, 3));
var glow = (new flash.filters.GlowFilter(16777215, 1, 4, 4, 2, 3, false, false));
var bitmap = (new flash.display.BitmapData(640, 480, false, 0));
var point = (new flash.geom.Point(0, 0));
var rect = (new flash.geom.Rectangle(0, 0, 640, 480));
var roids = [];
_root.createEmptyMovieClip("pallete", 5);
_root.createEmptyMovieClip("trails_pallete", 3);
_root.attachBitmap(bitmap, 2);
var roid;
var i = 0;
while (i < 5) {
roid = new Asteroid(random(320) + 160, random(240) + 120, 60, _root.pallete);
roids.push(roid);
i++;
}
Frame 2
function onEnterFrame() {
pallete.clear();
trails_pallete.clear();
var rot = Math.atan2(240 - ypos, xpos - 320);
dist = ((ypos - 240) * (ypos - 240)) + ((xpos - 320) * (xpos - 320));
xacc = ((-dist) * Math.cos(rot)) / 400000;
yacc = ((-dist) * Math.sin(rot)) / 400000;
var i = 0;
while (i < roids.length) {
roid = roids[i];
roid.moveRoid();
roid.drawRoid();
var size = roid.rad();
rot = -Math.atan2(ypos - roid.yp(), xpos - roid.xp());
dist = ((ypos - roid.yp()) * (ypos - roid.yp())) + ((xpos - roid.xp()) * (xpos - roid.xp()));
xacc = xacc + (((size * size) * Math.cos(rot)) / dist);
yacc = yacc + (((size * size) * Math.sin(rot)) / dist);
if (random(600) == 0) {
roid.drawSpecific(trails_pallete);
var X = roid.xp();
var Y = roid.yp();
roids.splice(i, 1);
size = (roid.rad() * 0.6) - random(6);
i--;
if (size > 8) {
roid = roids.push(new Asteroid((X + random(size)) - (size / 2), (Y + random(size)) - (size / 2), size, _root.pallete));
roid.drawSpecific(trails_pallete);
roid = roids.push(new Asteroid((X + random(size)) - (size / 2), (Y + random(size)) - (size / 2), size, _root.pallete));
roid.drawSpecific(trails_pallete);
}
}
i++;
}
if ((random(1400 / ((24 - roids.length) / 3)) == 0) && (roids.length < 20)) {
roid = roids.push(new Asteroid(random(320) + 160, random(240) + 120, 60, _root.pallete));
roid.drawSpecific(trails_pallete);
}
rot0 = Math.atan2(-yacc, xacc);
if (((xacc * xacc) + (yacc * yacc)) > 0.001) {
if (rota < 0) {
rota = rota + 6.2832;
}
if (rota > 6.2832) {
rota = rota - 6.2832;
}
if (((rota - rot0) < 3.1416) && ((rota - rot0) > -3.1416)) {
rota = rota + ((rot0 - rota) / 5);
} else if ((rota - rot0) <= 3.1416) {
rota = rota + (((3.1416 - rot0) - rota) / 5);
} else {
rota = rota + (((6.2832 + rot0) - rota) / 5);
}
if (rota < 0) {
rota = rota + (Math.PI*2);
}
if (rota > (Math.PI*2)) {
rota = rota - (Math.PI*2);
}
xvel = xvel + Math.cos(rota);
yvel = yvel + Math.sin(rota);
} else {
if (rota < 0) {
rota = rota + 6.2832;
}
if (rota > 6.2832) {
rota = rota - 6.2832;
}
if (((rota - rot0) < 3.1416) && ((rota - rot0) > -3.1416)) {
rota = rota + ((rot0 - rota) / 5);
} else if ((rota - rot0) <= 3.1416) {
rota = rota + (((3.1416 - rot0) - rota) / 25);
} else {
rota = rota + (((6.2832 + rot0) - rota) / 25);
}
if (rota < 0) {
rota = rota + (Math.PI*2);
}
if (rota > (Math.PI*2)) {
rota = rota - (Math.PI*2);
}
}
xpos = xpos + xvel;
ypos = ypos + yvel;
if (xpos < 0) {
xpos = 640;
}
if (xpos > 640) {
xpos = 0;
}
if (ypos < 0) {
ypos = 480;
}
if (ypos > 480) {
ypos = 0;
}
with (trails_pallete) {
cs = Math.cos(rota);
sn = Math.sin(rota);
lineStyle(2, 16777215);
moveTo(xpos + (14 * cs), ypos + (14 * sn));
lineTo(xpos - (14 * Math.cos(rota - 0.7)), ypos - (14 * Math.sin(rota - 0.7)));
lineTo(xpos - (6 * cs), ypos - (6 * sn));
lineTo(xpos - (14 * Math.cos(rota + 0.7)), ypos - (14 * Math.sin(rota + 0.7)));
lineTo(xpos + (14 * cs), ypos + (14 * sn));
}
xvel = xvel * 0.9;
yvel = yvel * 0.9;
bitmap.draw(trails_pallete);
bitmap.applyFilter(bitmap, rect, point, blur);
}
pallete.filters = [glow];
var xpos = 120;
var ypos = 40;
var rota = 0;
var xvel = 10;
var xacc = 0;
var yacc = 0;
var yvel = -2;
var rot0 = 0;
var cs;
var sn;
stop();
Symbol 3 MovieClip [spawn] Frame 4
this.removeMovieClip();
Symbol 4 MovieClip [__Packages.Asteroid] Frame 0
class Asteroid
{
var xpos, ypos, size, pallete, rota, xvel, yvel, rvel, vecPoints;
function Asteroid (x, y, s, p) {
xpos = x;
ypos = y;
size = s;
pallete = p;
rota = 0;
xvel = (random(17) - 8.5) / 10;
yvel = (random(17) - 8.5) / 10;
rvel = (random(11) - 5.5) / 100;
vecPoints = [];
var _local3 = random(int(size / 5)) + 5;
var _local2 = 0;
while (_local2 < _local3) {
vecPoints.push((random(int(size / 2)) + random(5)) + (size / 2));
_local2++;
}
}
function moveRoid() {
xpos = xpos + xvel;
ypos = ypos + yvel;
rota = rota + rvel;
if (xpos > 640) {
xpos = 0;
}
if (ypos > 480) {
ypos = 0;
}
if (xpos < 0) {
xpos = 640;
}
if (ypos < 0) {
ypos = 480;
}
}
function drawRoid() {
pallete.moveTo((vecPoints[0] * Math.cos(rota)) + xpos, (vecPoints[0] * Math.sin(rota)) + ypos);
pallete.lineStyle(2, 16777215, 100);
var _local2 = 1;
while (_local2 < vecPoints.length) {
pallete.lineTo((vecPoints[_local2] * Math.cos(rota + ((6.18 * _local2) / vecPoints.length))) + xpos, (vecPoints[_local2] * Math.sin(rota + ((6.18 * _local2) / vecPoints.length))) + ypos);
_local2++;
}
pallete.lineTo((vecPoints[0] * Math.cos(rota)) + xpos, (vecPoints[0] * Math.sin(rota)) + ypos);
}
function drawSpecific(targ) {
targ.moveTo((vecPoints[0] * Math.cos(rota)) + xpos, (vecPoints[0] * Math.sin(rota)) + ypos);
targ.beginFill(16777215, 100);
targ.lineStyle(2, 16777215, 100);
var _local2 = 1;
while (_local2 < vecPoints.length) {
targ.lineTo((vecPoints[_local2] * Math.cos(rota + ((6.18 * _local2) / vecPoints.length))) + xpos, (vecPoints[_local2] * Math.sin(rota + ((6.18 * _local2) / vecPoints.length))) + ypos);
_local2++;
}
targ.lineTo((vecPoints[0] * Math.cos(rota)) + xpos, (vecPoints[0] * Math.sin(rota)) + ypos);
targ.endFill();
}
function rad() {
return(size);
}
function xp() {
return(xpos);
}
function yp() {
return(ypos);
}
}