Flash #001 Media'

by takepepe
♥0 | Line 79 | Modified 2013-02-16 16:36:29 | MIT License
play

ActionScript3 source code

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

package  {
    import flash.display.*; 
    import flash.events.*;
    import flash.geom.*;
    import flash.media.*;
    import flash.filters.DisplacementMapFilter;
    
    public class Main extends Sprite{
        
        public static const WIDTH:Number = 465;
        public static const HEIGHT:Number  = 465;
        
        private var sp:Shape;
        private var screenBmd:BitmapData;
        private var screen:Bitmap;
        private var transformer:BitmapData;
        private var camera:Camera;
        private var video:Video;
        
        public function Main() {
            init();
            stage.addEventListener(MouseEvent.CLICK,onClick);
        }
        
        private function onClick(e:MouseEvent):void{
            sp.visible = !sp.visible;
        }
        
        /*
        
        @ setup
        
        =================================*/
        
        private function init():void{
            setAvator();
            setTransformer();
            setCamera();
            
        }
        
        private function setAvator():void{
            screenBmd = new BitmapData(WIDTH,HEIGHT,true,0x000000);
            screen = new Bitmap(screenBmd);
            addChild(screen);
        }
        
        private function setTransformer():void{
            sp =  new Shape();
            sp.alpha = 0.8;
            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(WIDTH,HEIGHT, 0,0,0);
            var spreadMethod:String =SpreadMethod.PAD;
            gr.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod); 
            gr.drawRect(0,0,WIDTH,HEIGHT);
            
            transformer = new BitmapData(WIDTH,HEIGHT);
            transformer.draw(sp);
            addChild(sp);
        }
        
        private function setCamera():void{
            camera = Camera.getCamera();
            camera.setMode(WIDTH,HEIGHT,30,true);
            camera.addEventListener(ActivityEvent.ACTIVITY,onActiveCamera);
            video = new Video(WIDTH,HEIGHT);
            video.attachCamera(camera);
        }
        
        private function onActiveCamera(e:ActivityEvent):void{
            if(e.activating){
                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);
            
        }

    }
}