Substance: [unknown ]

by bradsedito
♥0 | Line 59 | Modified 2012-07-15 06:23:49 | 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/9cTg
 */





package
{
    import flash.filters.BlurFilter;
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.ui.*;
    import net.hires.debug.Stats;  
  
    public class SubstanceUnknown extends Sprite 
    {
        private var particles:Vector.<MovieClip>
        private var hole:Vector3D
        private var stats:Stats = new Stats();
        public  var isMouseDown:Boolean;


        public function SubstanceUnknown() 
        { 
           stage.frameRate = 90;
           stage.addChild( stats );
           //ENTRY POINT:
           
           particles = new <MovieClip>[]
           for(var i:uint = 0; i<18; i++)  // i<9; 
           {
               addOne()
           }
           hole = new Vector3D(0,0,2)     //hole = new Vector3D(0,0,1)
   
           addEventListener("enterFrame", frame)
        }
        


        private function frame(e:Event):void 
        {
            for(var i:int = particles.length - 1; i >= 0; i--) 
            {
                var sp:MovieClip = particles[i]
                var d:Vector3D   = hole.subtract(sp.pos)
                var k:Number     =  (  (d.x*d.x)+(d.y*d.y)+(d.z*d.z)  )    ////var k:Number = Math.sqrt(  (d.x*d.x)+(d.y*d.y)+(d.z*d.z)  )        // var k:Number = d.x*d.x + d.y*d.y + d.z*d.z                

                k =  (k < 0.618) ? 100  :  (1000*k)      //k = (k < 0.1) ? 10 : 100*k    // k = (k < 0.1) ? 300 : 3000*k
                                                                
                sp.pos  =  sp.pos.add(sp.vec)
                sp.x    =  100*sp.pos.x/sp.pos.z+200 
                sp.y    =  100*sp.pos.y/sp.pos.z+200
                sp.z    =  sp.pos.z  // 100*sp.pos.z/sp.pos.z+200
                //sp.scaleX = 1/sp.pos.z
                //sp.scaleY = 1/sp.pos.z
                //sp.visible = sp.pos.z > 0.001
                
                sp.vec.x  +=  (d.x/k)*0.618//0.4   //   ( d.x/k )/114;
                sp.vec.y  +=  (d.y/k)*0.618//0.4   //   ( d.y/k )/114;  
                sp.vec.z  +=  (d.z/k)*0.618//0.4   //   ( d.z/k )/114;                
              //sp.vec.z  ==  Math.cos( Math.PI/360 )
            }           
        }
        
        private function addOne():void 
        {
            var sp:MovieClip = new MovieClip()
            var blurr:BlurFilter = new BlurFilter( 20,20,3 )
            //var sp_LOC3D:uint = new uint(    sp.globalToLocal3D(  new Point(sp.x,sp.y)  )   )
            sp.graphics.beginFill( 0xFFFFFF*Math.random(),1 )
            sp.blendMode = 'add'
            sp.graphics.drawCircle( 0,0,30 )
            sp.graphics.endFill()
            sp.pos = new Vector3D(Math.random()-0.5, Math.random()-0.5, 0.5+Math.random())
            sp.vec = new Vector3D(Math.random()/30-1/60, Math.random()/30-1/60, Math.random()/30-1/60)
            sp.filters = [ blurr ]
            
            addChild(sp)
            particles.push(sp)
        }
    }
}