DepthField (DOF 3D Class)

by bradsedito
Depth of Field class for a 3D environment. 
♥0 | Line 92 | Modified 2011-07-17 08:06:51 | MIT License
play

ActionScript3 source code

/**
 * Copyright bradsedito ( http://wonderfl.net/user/bradsedito )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/cx4A
 */

package
{
    import flash.display.*;
    import caurina.transitions.properties.*;
    import net.hires.debug.Stats;
    import flash.utils.setInterval;
    import flash.filters.*;
    import flash.geom.*;

    [SWF(frameRate=100, backgroundColor=0x0)]

    public class DepthField extends Sprite
    {       
        public var canvas:Bitmap = new Bitmap(new BitmapData(stage.stageWidth,stage.stageHeight,false));

        public function DepthField()
        {
            FilterShortcuts.init();
            DisplayShortcuts.init();
            CurveModifiers.init();           
            addChild(canvas);
         setInterval(drawCanvas, 30);
            for (var i:uint = 0; i<50; i++){
                var f:Fooler = new Fooler();
                addChild(f);
                f.foolAround();
            }    
      var s:Stats = new Stats();
      addChild(s);     
     }        
        private function drawCanvas():void {
            canvas.bitmapData.draw(this);
            canvas.bitmapData.applyFilter(canvas.bitmapData, canvas.bitmapData.rect, new Point(0), new BlurFilter(0,0,1));
            canvas.bitmapData.applyFilter(canvas.bitmapData, canvas.bitmapData.rect, new Point(), 
            new ColorMatrixFilter(
            [     2,    0,    0,    0,  -60,
                  0,    2,    0,    0,  -60,
                  0,    0,    2,    0,  -60,
                  0,    0,    0,    1,    0
               ]));               
        }
        
    }
}
   
import flash.display.*;
import caurina.transitions.Tweener;

class Fooler extends Sprite 
{        
        private var tx:Number;
        private var ty:Number;
        private var tz:Number;
        private var bx:Number;
        private var by:Number;        
        private var bz:Number;
      private       var palette:Array = [0xCC0000, 0x000000,0x000000,0x000000,0x000000,0x000000];
  //      private       var palette:Array = [0xCC0000, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff];
        public static var foolers:Array = [];                
function Fooler() 
    {
            x = 0;
            y = 0;
            z = 0;
//          x = Math.random()*400;
//          y = Math.random()*400;
//          z = Math.random()*1000;
            alpha = 0;
            draw();
            foolers.push(this);
        }

        private function draw():void{
            var g:Graphics = graphics;
            g.beginFill(palette[Math.floor(palette.length)], 0.75);
            var r:Number = 6;
            g.drawCircle(0,0,r); 
            if (Math.random()<0.5) g.drawCircle(0,0,r+2);
            g.endFill();
        }; 

      public function foolAround():void {
           bx = Math.random()*stage.stageWidth;
           by = Math.random()*stage.stageHeight;
//           bz = Math.random()*1000;
           tx = Math.random()*stage.stageWidth;
           ty = Math.random()*stage.stageHeight;
 //          tz = Math.random()*1000;

           Tweener.addTween(this, 
           {
                    x : tx,
                    y : ty,
                    z : tz,
              _bezier : [{x:bx, y:by, z:bz}],
               _scale : 0.5+(0.5*z),
                alpha : 0.5+0(.5*z),
                 time : 15+Math.random()*5,
                delay : Math.random()*1,
          _Blur_blurX : Math.abs((0.35-z)*30),
          _Blur_blurY : Math.abs((0.35-z)*30),
//        _Blur_blurZ : Math.abs((0.75-z)*20),
        _Blur_quality : 2,
           transition : 'easeinoutquad',
           onComplete : foolAround
            });
        }
    }