var canvas:BitmapData = new BitmapData(400,400, false, 0xFFFFFF);
addChild(new Bitmap(canvas));
var eraser:BitmapData = new BitmapData(400,400, true, 0x33FFFFFF);
var particles:Array = new Array();
for (var i:int = 0; i < 1000; i++){
particles.push(makeParticle());
}
addEventListener(Event.ENTER_FRAME, onLoop);
function onLoop(evt:Event):void {
canvas.copyPixels(eraser, eraser.rect, new Point(0,0), null, null, true);
for (var i:int = 0; i < particles.length; i++){
particles[i]();
}
}
function makeParticle():Function {
var dx:Number, dy:Number;
var x:Number = 200;
var y:Number = 200;
var vx:Number = Math.random() * 4 - 2;
var vy:Number = Math.random() * 4 - 2;
return function():void {
x += vx;
y += vy;
dx = x - 200;
dy= y - 200;
if (Math.sqrt((dx * dx) + (dy * dy)) > 100){
vx *= -1;
vy *= -1;
}
canvas.setPixel(x, y, 0x000000);
}
}
This creates a circular area filled with moving particles/pixels. It makes use of yesterdays functional programming techniques.