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

forked from: Ported from http://actionsnippet.com/?p=2820

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

// forked from og2t's Ported from http://actionsnippet.com/?p=2820
package
{
    import flash.filters.BlurFilter;
    import flash.geom.ColorTransform;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BlendMode;
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.events.ActivityEvent;
    import flash.events.Event;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.media.Camera;
    import flash.media.Video;

    public class FrameDiff extends Sprite
    {
        private var cam:Camera = Camera.getCamera();
        private var sw:Number = 465;
        private var sh:Number = 465;
        private var pnt:Point = new Point(0,0);
        private var rect:Rectangle = new Rectangle(0,0,sw,sh);
        private var video:Video = new Video(sw, sh);
        
        private var solouno = 0;

        private var canvas:BitmapData = new BitmapData(sw, sh, false, 0x000000);
        private var buffer:BitmapData = new BitmapData(sw, sh, false, 0x000000);
        private var feed  :BitmapData = new BitmapData(sw, sh, false, 0x000000);
        private var prev  :BitmapData = new BitmapData(sw, sh, false, 0x000000);
        
        private var differ:BitmapData = new BitmapData(sw, sh, false, 0x000000);

        private var frame:Bitmap = new Bitmap(canvas, "auto", true);

        public function FrameDiff() 
        {
            addChild(frame);

            cam.setMode(sw, sh, 12);
            video.attachCamera(cam);

            cam.addEventListener(ActivityEvent.ACTIVITY, onActivityStart);
        }

        private function onActivityStart(evt:ActivityEvent):void
        {
            addEventListener(Event.ENTER_FRAME, onRun);
            cam.removeEventListener(ActivityEvent.ACTIVITY, onActivityStart);
        }

        private function onRun(evt:Event):void
        {
            
            var blf:BlurFilter = new BlurFilter(8, 8, 3);         
            
            buffer.draw(video);
           //  feed.copyPixels(buffer, rect, pnt);
            
            // buffer.draw(prev, null, null, BlendMode.DIFFERENCE);
            // buffer.colorTransform(new Rectangle(0, 0, buffer.width, buffer.height), new ColorTransform(2,2,2,2) );
            if ( solouno == 0 ) {
                prev.draw(video);
                solouno = 1;
            }

            // differ = BitmapData(buffer.compare(prev));
              
            differ = BitmapData(prev.compare(buffer));
                      
                      
            var mask:BitmapData = new BitmapData(buffer.width, buffer.height, true, 0);        
                      
            const threshold:uint = 0xC0;
            for (var i:int = 0; i < 3; i++) 
                mask.threshold(differ, rect, new Point(), ">", threshold << (i * 8), 0xFF000000, 0xFF << (i * 8));                   
            
            mask.applyFilter(mask, rect, pnt, blf);
            
            
            mask.threshold(mask, rect, new Point(), "<=", 0xCC000000);
            mask.applyFilter(mask, rect, pnt, blf);
            mask.threshold(mask, rect, new Point(), "<=", 0x66000000);
            /*
            mask.applyFilter(mask, rect, pnt, blf);
            mask.applyFilter(mask, rect, pnt, blf);
            mmask.threshold(mask, rect, new Point(), "<=", 0x66000000);mask.threshold(mask, rect, new Point(), "<=", 0x660);ask.threshold(mask, rect, new Point(), "<=", 0x66000000);
            */
            
            
            canvas.draw(video);
            canvas.draw(mask);            
            // canvas.copyPixels(mask, rect, pnt);
        
            // canvas.threshold(canvas, new Rectangle(0, 0, buffer.width, buffer.height), new Point(0, 0), ">=", 0xFFCCCCCC);
            // canvas.applyFilter(canvas, rect, pnt, blf);
            // canvas.colorTransform(rect, new ColorTransform(5, 5, 5, 5));
            // canvas.threshold(canvas, new Rectangle(0, 0, buffer.width, buffer.height), new Point(0, 0), "<", 0xFFCCCCCC);
            // canvas.applyFilter(canvas, rect, pnt, blf);
            // canvas.colorTransform(rect, new ColorTransform(5, 5, 5, 5));
            // canvas.applyFilter(canvas, rect, pnt, blf);var mask:BitmapData = new BitmapData(dif.width, dif.height, true, 0);
            


            // canvas.threshold(canvas, new Rectangle(0, 0, buffer.width, buffer.height), new Point(0, 0), "<", 0xFFCCCCCC);
            
            
           
           
           
           
        }
    }
}