In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

Flash #001 Media

http://takepepe.com/?p=195
Get Adobe Flash player
by takepepe 16 Feb 2013
    Embed
/**
 * Copyright takepepe ( http://wonderfl.net/user/takepepe )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/t0eb
 */

package  {
    import flash.display.*; 
    import flash.events.*;
    import flash.geom.*;
    import flash.media.*;
    import flash.net.*;
    import flash.system.*;
    import flash.filters.DisplacementMapFilter;
    import flash.text.TextField;
    
    public class Main extends Sprite{
        
        public static const WIDTH:Number = 465;
        public static const HEIGHT:Number  = 465;
        public static const CAMERA_WIDTH:Number  = 640;
        public static const CAMERA_HEIGHT:Number  = 480;
        public static const OFFSET:Number  = 1.6;
        
        private var loader:Loader;
        private var lens:Bitmap;
        private var lensBmd:BitmapData;
        private var lensR:Rectangle = new Rectangle(0,110,250,160);
        private var screenBmd:BitmapData;
        private var screen:Bitmap;
        private var frame:Bitmap;
        private var frameBmd:BitmapData;
        private var caption:TextField;
        private var transformer:BitmapData;
        private var camera:Camera;
        private var video:Video;
        
        public function Main() {
            Security.loadPolicyFile( "http://takepepe.com/crossdomain.xml" ) ;
            setCaption();
            loader = new Loader();
            loadFrame();
        }
        
        /*
        
        @ load Assets
        
        =================================*/
        
        private function loadFrame():void{
            loader.load(new URLRequest("http://takepepe.com/wp-content/uploads/2013/02/Falsh001_frame.png"));
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadLens);
        }
        
        private function loadLens(e:Event):void{
            loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,loadLens);
            frameBmd = new BitmapData(WIDTH,HEIGHT,true,0x00000000);
            frameBmd.draw(loader);
            
            loader.load(new URLRequest("http://takepepe.com/wp-content/uploads/2013/02/Falsh001_lens.png"));
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadedAssets);
        }
        
        private function onLoadedAssets(e:Event):void{
            loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onLoadedAssets);
            lensBmd = new BitmapData(WIDTH,HEIGHT,true,0x00000000);
            lensBmd.draw(loader);
            
            init();
        }
        
        /*
        
        @ setup
        
        =================================*/
        
        private function init():void{
            setAvator();
            setTransformer();
            setCamera();
        }
        
        private function setAvator():void{
            lens = new Bitmap (lensBmd);
            lens.alpha = 0.2;
            addChild(lens);
            
            screenBmd = new BitmapData(lensR.width*OFFSET,lensR.height*OFFSET,true,0x00000000);
            screen = new Bitmap(screenBmd);
            screen.blendMode = "overlay";
            screen.x = -95;
            screen.y = 85;
            screen.alpha = 0.2;
            addChild(screen);
            
            frame = new Bitmap (frameBmd);
            frame.alpha = 0.2;
            addChild(frame);
        }
        
        private function setCaption():void{
            caption = new TextField ();
            caption.x = 10;
            caption.y = 10;
            caption.textColor = 0xFFFFFF;
            caption.text = "Wait a minute...";
            addChild(caption);
        }
        
        private function setTransformer():void{
            var sp:Shape =  new Shape();
            var gr:Graphics = sp.graphics;
            var fillType:String = GradientType.RADIAL;
            var colors:Array = [0xFF0000,0x0000FF];
            var alphas:Array = [1, 1];
            var ratios:Array = [0,  255];
            var matr:Matrix = new Matrix();
            matr.createGradientBox(lensR.width*2*OFFSET, lensR.height*2*OFFSET, 0, lensR.width*-0.5*OFFSET,lensR.height*-0.3*OFFSET);
            var spreadMethod:String =SpreadMethod.PAD;
            gr.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod); 
            gr.drawRect(lensR.x*OFFSET,0,lensR.width*OFFSET,lensR.height*OFFSET*2);
            
            transformer = new BitmapData(WIDTH,HEIGHT);
            transformer.draw(sp);
        }
        
        private function setCamera():void{
            camera = Camera.getCamera();
            camera.setMode(lensR.width*OFFSET,lensR.height*OFFSET,30,true);
            camera.addEventListener(ActivityEvent.ACTIVITY,onActiveCamera);
            video = new Video(lensR.width*OFFSET,lensR.height*OFFSET);
            video.attachCamera(camera);
        }
        
        private function onActiveCamera(e:ActivityEvent):void{
            if(e.activating){
                caption.text = "Active";
                 lens.alpha = 1
                 screen.alpha = 1
                 frame.alpha = 1
                addEventListener(Event.ENTER_FRAME,update);
                addEventListener(Event.ENTER_FRAME,draw);
            }else{
                removeEventListener(Event.ENTER_FRAME,update);
                removeEventListener(Event.ENTER_FRAME,draw);
            }
        }
        
        /*
        
        @ main loop
        
        =================================*/
        
        private function update(e:Event):void{
            var mapPoint:Point = new Point(0, 0); 
            var componentX:uint = BitmapDataChannel.GREEN; 
            var componentY:uint = BitmapDataChannel.RED ;
            var forceX:Number = 0; 
            var forceY:Number = 200; 
            var my_filter:DisplacementMapFilter = new DisplacementMapFilter(transformer, mapPoint, componentX, componentY, forceX, forceY, "color", 0, 0);
            screen.filters = new Array(my_filter)
        }
        
        private function draw(e:Event):void{
            var matrix:Matrix = new Matrix();
            matrix.scale(-1, 1);
            matrix.translate(screenBmd.width, 0);
            screenBmd.draw(video, matrix);
            
        }

    }
}