flash on 2012-7-8
...
@author umhr
♥0 |
Line 49 |
Modified 2012-07-08 03:38:50 |
MIT License
archived:2017-03-20 11:12:57
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;
}
}
}