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 on 2011-11-18

use a container to contain a camera video
if press capture. the video replaced by the bitmapdata. 
!!!!!! the bitmap image is SMALLER (USING THE MATRIX OBJECT)
if press reset the camera video back again
fullscreen
Get Adobe Flash player
by NullBaySea 17 Nov 2011
    Embed
/**
 * Copyright NullBaySea ( http://wonderfl.net/user/NullBaySea )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/5Sk9
 */

// use a container to contain a camera video
// if press capture. the video replaced by the bitmapdata. 
// !!!!!! the bitmap image is SMALLER (USING THE MATRIX OBJECT)
// if press reset the camera video back again

package {
    import flash.display.MovieClip;
    import flash.media.Camera;
    import flash.media.Video;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.geom.Matrix;
    import flash.geom.Point;
    // fullscreen
    import flash.display.Stage
    import flash.display.StageDisplayState

    public class Main extends MovieClip {
        // data for the camera
        private var CameraObj:Camera;
        private var VideoObj:Video;
        private var VidW:int = 640;
        private var VidH:int = 480;
        // data for the bitmapdata
        private var BitmapDataStage:BitmapData;
        private var BitmapStage:Bitmap;
        private var BitW:int = 1024;
        private var BitH:int = 768;
        private var ScaleRatio:Number = .05;
        private var tx:int = Math.floor(VidW * ScaleRatio);
        private var ty:int = Math.floor(VidH * ScaleRatio);
        private var k:int = 0;
        private var row:int = 32;
        private var total:int = row*32;
        // for the bitmap size transformation
        private var MatrixTransform:Matrix;
        // a bitmap array to store 100 image
        private var BitmapDataArray :Array = new Array();
        //
        public function Main() {
            if (stage != null) {
                init();
            } else {
                addEventListener(Event.ADDED_TO_STAGE , on_ADDED_TO_STAGE);
                addEventListener(Event.REMOVED_FROM_STAGE , on_REMOVED_FROM_STAGE );
            }
        }
        public function on_ADDED_TO_STAGE(e:Event):void {
            init();
        }
        public function init():void {
            // fullscreen
            stage.displayState = StageDisplayState.FULL_SCREEN;
            // Camera Object
            CameraObj = Camera.getCamera();
            CameraObj.setMode(VidW,VidH,30,true);
            // Video Object that holds the Camera Object;
            VideoObj = new Video(CameraObj.width,CameraObj.height);
            VideoObj.attachCamera(CameraObj);
            // BITMAP on stage
            BitmapDataStage = new BitmapData(BitW,BitH,false,0x000000);
            BitmapStage = new Bitmap(BitmapDataStage);
            // BITMAPDATA sssss to store time
            for (var i:int = 0; i<total; i++) {
                var BMPD:BitmapData = new BitmapData(tx,ty,false,0x000000);
                BitmapDataArray.push(BMPD);
            }
            //;
            addChild(BitmapStage);
            //
            addEventListener(Event.ENTER_FRAME , on_ENTER_FRAME,  false , 0 ,true);
        }
        public function on_ENTER_FRAME(e:Event):void {
            // shift 1-99 to 0-98
            for (var i:int = 0; i<total-1; i++) {
                BitmapDataArray[i] = BitmapDataArray[i + 1];
            }
            // change 99th bitmapdata
            var BMPD:BitmapData = new BitmapData(tx,ty,false,0x000000);
            MatrixTransform = new Matrix();
            MatrixTransform.scale(ScaleRatio,ScaleRatio);
            BMPD.draw(VideoObj,MatrixTransform);
            BitmapDataArray[total - 1] = BMPD;
            //
            // scale the image first 
            for (var k:int = 0; k<total; k++) {
                var BMP_cache:BitmapData = BitmapDataArray[k] as BitmapData;
                BitmapDataStage.copyPixels(BMP_cache,BMP_cache.rect,new Point(tx*(k%row) , ty *(k-k%row)/row) ,null,null,false);
            }
            //;
            k++;
            if (k == total) {
                k = 0;
            }
        }
        public function on_REMOVED_FROM_STAGE(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE , on_ADDED_TO_STAGE);
            removeEventListener(Event.REMOVED_FROM_STAGE , on_REMOVED_FROM_STAGE );
        }
    }
}