Well I havent worked with MC's but i tried Bdata and it seemed neearly the same. here are the codes for you to compare.
------------------------------------------
-
AS 3.0
-----------------------------------------
import flash.display.*
import flash.geom.*;
var B:BitmapData = new BitmapData(550,400,true,0xFFFFFFFF);
var B2:Bitmap = new Bitmap(B);
var PTA:Array = new Array();
var RET:Rectangle = new Rectangle(0,0,550,400);
var i:uint
var DIST:uint
var XDIF:Number
var YDIF:Number
addChild(B2);
for (i = 0; i<=10000; i++)
{
PTA.push([Math.random()*550, Math.random()*400, 0, 1]);
}
function OEF(lol:Event):void {
for (i = 0; i<PTA.length; ++i) {
PTA[i][1] += PTA[i][3];
PTA[i][0] += PTA[i][2];
B.setPixel(PTA[i][0], PTA[i][1], 0x00000000);
if (PTA[i][1]>=400) {
PTA[i][1] = 0;
PTA[i][0] = Math.random()*550;
}
if (PTA[i][0]>550) {
PTA[i][0] = 0;
}
if (PTA[i][0]<0) {
PTA[i][0] = 550;
}
XDIF = PTA[i][0]-mouseX;
YDIF = PTA[i][1]-mouseY;
DIST = Math.sqrt(YDIF*YDIF+XDIF*XDIF);
if (DIST<=100) {
PTA[i][2] += .05/(DIST/XDIF);
PTA[i][3] += .05/(DIST/YDIF);
} else {
PTA[i][3] -= (PTA[i][3]-1)/10;
PTA[i][2] -= (PTA[i][2])/20;
}
}
B.colorTransform(RET, new ColorTransform(1, 1, 1, 1, 20, 20, 20, 0));
}
addEventListener(Event.ENTER_FRAME,OEF);
----------------------------------------
AS 2.0
-----------------------------------------
import flash.display.BitmapData;
import flash.geom.ColorTransform;
var B:BitmapData = new BitmapData(550, 400, true, 0xFFFFFFFF);
_root.attachBitmap(B, this.getNextHighestDepth());
var PTA:Array = new Array();
for (var i = 0; i<=10000; i++) {
PTA.push([random(550), random(400), 0, 1]);
}
var YSPEED:Number = 1;
var XSPEED:Number = 1;
onEnterFrame = function () {
for (var i = 0; i<PTA.length; i++) {
PTA[i][1] += PTA[i][3];
PTA[i][0] += PTA[i][2];
B.setPixel(PTA[i][0], PTA[i][1], 0x000000);
if (PTA[i][1]>=400) {
PTA[i][1] = 0;
PTA[i][0] = random(550);
}
if (PTA[i][0]>550) {
PTA[i][0] = 0;
}
if (PTA[i][0]<0) {
PTA[i][0] = 550;
}
XDIF = PTA[i][0]-_xmouse;
YDIF = PTA[i][1]-_ymouse;
DIST = Math.sqrt(YDIF*YDIF+XDIF*XDIF);
if (Math.abs(DIST)<=100) {
PTA[i][2] += .05/(DIST/XDIF);
PTA[i][3] += .05/(DIST/YDIF);
} else {
PTA[i][3] -= (PTA[i][3]-1)/10;
PTA[i][2] -= (PTA[i][2])/20;
}
}
B.colorTransform(B.rectangle, new ColorTransform(1, 1, 1, 1, 20, 20, 20, 0));
};