forked from: Blobs
Blobs (1,300bytes effect)
by Mr.doob
// forked from mrdoob's Blobs
//
// Blobs (1,300bytes effect)
// by Mr.doob
//
package
{
import flash.display.*;
import flash.filters.BlurFilter;
import flash.utils.getTimer;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.events.Event;
public class Blobs extends Sprite
{
private var bl : Array = [];
private var r : Bitmap;
private var c : Sprite;
private var rect : Rectangle;
private var point : Point = new Point;
public function Blobs()
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init( e : Event ) : void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.align = "TL";
stage.scaleMode = "noScale";
c = new Sprite();
c.filters = [new BlurFilter(20,20,1)];
addChild(c);
r = new Bitmap( new BitmapData( stage.stageWidth, stage.stageHeight, false, 0x00FFFFFF ) );
addChild(r);
for (var i:Number = 0; i < 50; i ++)
{
bl[i] = new MovieClip();
bl[i].graphics.beginGradientFill("radial",[0x000066,0x00CC99],[0xFF,0xFF],[0x00,0x80]);
bl[i].graphics.drawCircle(0,0,Math.random()*20+50);
bl[i].x = Math.random() * stage.stageWidth;
bl[i].y = Math.random() * stage.stageHeight;
bl[i].cycle = Math.random() * 100000;
c.addChild(bl[i]);
}
rect = new Rectangle(0,0,stage.stageWidth, stage.stageHeight);
addEventListener( Event.ENTER_FRAME, u );
}
public function u(e : Event) : void
{
for (var i:Number = 0; i < 50; i ++)
{
bl[i].x += Math.sin( ( getTimer() + bl[i].cycle ) * .001 ) * 3;
bl[i].y += Math.cos( ( getTimer() + bl[i].cycle ) * .001 ) * 3;
bl[i].scaleX = bl[i].scaleY += Math.sin( ( getTimer() + bl[i].cycle ) *.01 ) *.05 ;
}
r.bitmapData.fillRect(rect,0x00FFFFFF);
r.bitmapData.draw(c, null, null, BlendMode.NORMAL);
r.bitmapData.threshold(r.bitmapData,rect,point,">",0x00800000,0xFFFFFFFF,0x00808080,true);
}
}
}