forked from: [study] pv3d - pixels

by bradsedito forked from [study] pv3d - pixels (diff: 72)
♥0 | Line 77 | Modified 2011-07-26 22:39:56 | 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/qHIG
 */

// forked from gaina's [study] pv3d - pixels
package 
{
    import flash.display.BlendMode;
    import flash.events.Event;
    import flash.filters.BlurFilter;
    import org.papervision3d.core.effects.BitmapLayerEffect;
    import org.papervision3d.core.effects.utils.BitmapDrawCommand;
    import org.papervision3d.core.geom.Pixels
    import org.papervision3d.core.geom.renderables.Pixel3D;
    import org.papervision3d.materials.BitmapColorMaterial;
    import org.papervision3d.objects.primitives.Sphere;
    import org.papervision3d.view.BasicView;
    import org.papervision3d.view.layer.BitmapEffectLayer;
    import com.greensock.*;
    import com.greensock.easing.*;
    import net.hires.debug.Stats;
    
    [SWF(width=465,height=465,backgroundColor=0x000000,frameRate=100)]
   
    public class Main extends BasicView
    {
        private var NUM:int = 100;
        private var rot:Number = 0;
        
        public function Main():void 
        {         
         // camera.zoom = 2 ;        
            draw();
            startRendering();        
            addEventListener(Event.ENTER_FRAME, loop);
            var stats:Stats = new Stats();
            addChild(stats);
        }    
        private function loop(event:Event):void 
        {
            const SW:Number = new Number( stage.stageWidth  );
            const SH:Number = new Number( stage.stageHeight );
            var rot:Number;
            var angle:Number;
            var radius:Number;            
            angle  =  360;
            radius =  50;
            rot    =  5;
            var MainTL:TimelineMax = new TimelineMax({timeScale:2}); 
  /*          MainTL.append
            (
                TweenMax.to(camera, 1,
                    {
                        x:mouseX,
                        y:mouseY,
                        z:Math.cos(rot * Math.PI / 180),
                      //z:(SW/2) + Math.cos(angle)*radius,
                        ease:Quad.easeInOut
                    })
            );                       
   */         
       /*
            angle += a;
            tx = cx + r*Math.sin(angle*rx*radian)*Math.cos(angle*radian)*sx;
            ty = cy + r*Math.sin(angle*ry*radian)*sy;
            tz = cz + r*Math.sin(angle*rz*radian)*Math.sin(angle*radian)*sz;
            px += (tx - px)*deceleration;
            py += (ty - py)*deceleration;
            pz += (tz - pz)*deceleration;
       */
         // camera.zoom +=((mouseX+mouseY)/10-camera.zoom)/10;  
         // rot += 0;        
         // camera.x += Math.sin(rot * Math.PI / 180);
         // camera.z += Math.cos(rot * Math.PI / 180);
         // camera.y += Math.cos(rot * Math.PI / 180);        
        }
        
        private function draw():void 
        {
            var _effect:BitmapEffectLayer = new BitmapEffectLayer(viewport, 465, 465);
            _effect.addEffect(new BitmapLayerEffect(new BlurFilter(2, 2, 1)));        
            _effect.drawCommand = new BitmapDrawCommand(null, null, BlendMode.SCREEN);
            viewport.containerSprite.addLayer(_effect);        
            var pxs:Pixels = new Pixels(_effect);
            scene.addChild(pxs);        
            for (var i:int = 0; i < NUM; i++)
            {
                var tx:Number;
                var ty:Number;
                var tz:Number;
                var xx:Number = Math.random() * 1000 - 500;
                var yy:Number = Math.random() * 1000 - 500;
                var zz:Number = Math.random() * 1000 - 500;        
                tx += Math.sin(rot * Math.PI / 180);
                ty += Math.cos(rot * Math.PI / 180);
                tz += Math.cos(rot * Math.PI / 180);         
                var px:Pixel3D = new Pixel3D(0xFFFFFFFF, xx, yy, zz);            
                pxs.addPixel3D(px);  
                addEventListener(Event.ENTER_FRAME, updatePixels);
                function updatePixels():void 
                {
                    TweenMax.to(pxs, 1, 
                    {
                        x:tx,
                        y:ty,//stage.mouseY + (Math.random() * 20),
                        z:tz,//Math.cos(rot * Math.PI / 180),
                     // z:(SW/2) + Math.cos(angle)*radius,
                        ease:Quad.easeInOut
                        });
                }
            }
        }        
    }    
}