package { import flash.display.Sprite import flash.display.StageAlign import flash.display.StageScaleMode import flash.display.BitmapData import flash.display.Bitmap import flash.utils.setInterval import flash.text.TextField import flash.media.Camera import flash.media.Video import flash.geom.Point import flash.geom.Rectangle public class MotionCam extends Sprite { private var cam :Camera; private var video :Video; private var now :BitmapData; private var out :BitmapData; private var diff :BitmapData; private var prev :BitmapData; private var label :TextField; private var myInt :Number; private var camFPS :Number = 15; private var camW :Number = 250; private var camH :Number = 190; public function MotionCam () { cam = Camera.getCamera(); cam.setMode(camW, camH, camFPS); if (cam == null) { label = new TextField(); label.text = "NO WEBCAM"; addChild(label); } else { video = new Video(cam.width, cam.height); video.attachCamera(cam); addChild(video); now = new BitmapData(video.width, video.height); out = new BitmapData(video.width, video.height); diff = new BitmapData(video.width, video.height); prev = new BitmapData(video.width, video.height); var previous = addChild(new Bitmap(prev)); previous.x = video.width; var diffBitmap = addChild(new Bitmap(diff)); diffBitmap.y = video.height; var output = addChild(new Bitmap(out)); output.x = video.width; output.y = video.height; myInt = setInterval(render, 2000/camFPS); } } private function render ():void { if (!cam.currentFPS) return; now.draw(video); diff.draw(video); diff.draw(prev,null,null,"difference"); out.fillRect(new Rectangle(0,0,out.width,out.height),0xFF000000); out.threshold(diff, new Rectangle(0,0,diff.width,diff.height), new Point(0,0), ">", 0xFF333333, 0xFFFF0000); prev.draw(video); } } }