flash on 2012-7-8

by umhr
...
@author umhr
♥0 | Line 49 | Modified 2012-07-08 03:38:50 | MIT License
play

ActionScript3 source code

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

package  
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.media.Camera;
    import flash.media.Video;
    /**
     * ...
     * @author umhr
     */
    public class Sabun extends Sprite
    {
        private var _video:Video;
        private var _prevBitmapdata:BitmapData = new BitmapData(320, 240,false);
        private var _bitmapdata:BitmapData = new BitmapData(320, 240, false);
        private var _bitmap:Bitmap = new Bitmap(_bitmapdata, "auto", true);
        public function Sabun() 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            
            var camera:Camera = Camera.getCamera();
            
            if (camera) {
                camera.setMode(320, 240, 30);
                _video = new Video();
                _video.attachCamera(camera);
                addChild(_bitmap);
                addEventListener(Event.ENTER_FRAME, enterFrame);
            } else {
                trace("カメラが見つかりませんでした。");
            }
            
        }
        
        private function enterFrame(e:Event):void 
        {
            if (_video == null) {
                return;
            }
            
            var tempBitmapdata:BitmapData = new BitmapData(320, 240, false);
            tempBitmapdata.draw(_video);
            
            _bitmapdata.draw(getDifference(new Bitmap(tempBitmapdata), new Bitmap(_prevBitmapdata)), null, null);
            
            _prevBitmapdata = tempBitmapdata.clone();
        }
        
        
        private function getDifference(a:Bitmap, b:Bitmap):Bitmap {
            b.bitmapData.draw(a, null, null, "difference");
            return b;
        }
        
    }

}