Avalanche (blendModes, bitmaps & blur)
September 20th, 2008Randomly combining filters, blendModes and bitmapData can lead to some interesting techniques. A few days ago I stumbled upon something that I could only think to call an avalanche effect:
Click above image to view flash version
Here is all the code - this will work right on your flash timeline:
Actionscript:
-
var canvas:BitmapData = new BitmapData(500,500,true,0xFFFFFFFF);
-
var overlay:BitmapData = new BitmapData(500,500, true, 0x02FFFFFF);
-
addChild(new Bitmap(canvas,"auto",true));
-
-
var blur:BlurFilter = new BlurFilter(2,2,1);
-
-
var b = new Shape();
-
b.graphics.beginFill(0x000000);
-
b.graphics.drawCircle(0,0,20);
-
b.x = 250;
-
b.y = -40;
-
-
var m = new Matrix();
-
m.tx = 0;
-
m.ty = 2;
-
-
var vel:Number = .1;
-
var t = 0;
-
-
addEventListener(Event.ENTER_FRAME, onLoop);
-
function onLoop(evt:Event):void {
-
vel+=.05;
-
b.y += vel;
-
if (b.y> 600) {
-
t++;
-
if (t> 500) {
-
b.graphics.clear();
-
b.graphics.beginFill(0xFFFFFF);
-
b.graphics.drawCircle(0,0,20);
-
b.y = -100;
-
vel = 0;
-
b.x = Math.random()*300 + 100;
-
t = 200;
-
}
-
}
-
canvas.draw(b, b.transform.matrix);
-
-
// this is the part that creates the effect
-
overlay.copyPixels(canvas, canvas.rect, new Point(0,0), null, null, true);
-
canvas.draw(overlay, m, null, BlendMode.DIFFERENCE);
-
overlay.applyFilter(overlay, overlay.rect, new Point(0,0), blur);
-
canvas.draw(overlay, m, null, BlendMode.SCREEN);
-
canvas.applyFilter(canvas, canvas.rect, new Point(0,0), blur);
-
}