monokurocamera
import flash.geom.Rectangle;
import flash.geom.Matrix;
package {
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.display.PixelSnapping;
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.display.BitmapDataChannel;
//import flash.geom.Rectangle;
//import flash.geom.Matrix;
import flash.geom.*;
import flash.utils.ByteArray;
import flash.media.Camera;
import flash.media.Video;
import flash.events.ActivityEvent;
import flash.events.*;
public class bitmap7 extends Sprite {
/*クラスファイル*/
var sp:Sprite=new Sprite();
var pnt:Point=new Point(0,0);
//camera
var camera:Camera;
var video:Video;
var photo_bm:Bitmap;
var photo_bd:BitmapData;
var sa_bm:Bitmap;
var sa_bd:BitmapData;
var photo_bdfront:BitmapData;
var photo_bdback:BitmapData;
var enterflag:int=0;
var shot1fla:int=0;
//var bmd:BitmapData=new BitmapData(200,120,false,0xFFFFCC00);
//幅(ピクセル数1~2880),高さ(ピクセル数1~2880),アルファチャンネルをtrueサポート false非サポート
//0xFFFFFFFF白
//var bm:Bitmap=new Bitmap();daichi
public function bitmap7() {
sp.addEventListener(MouseEvent.CLICK,enterFramebtn);
//camera
// カメラソースを取得
camera = Camera.getCamera();
//ボタンの設定
// 表示処理
initCamera();
initPhoto();
sp.addChild(video);
addChild(sp);
}
function enterFramebtn(evt:Event):void{
if(enterflag==1){
removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
enterflag=0;
shot1fla=0;
}else if(enterflag==0){
addEventListener(Event.ENTER_FRAME,enterFrameHandler);
enterflag=1;
}
}
function enterFrameHandler(evt:Event):void{
var thrCol1:uint=0x00777777;
var col1:uint=0xFF0000FF;
var mskCol1:uint=0x000000FF;
//bm.bitmapData.threshold(nextBmd,nextBmd.rect,pnt,"<",thrCol,col,mskCol,true);
//過去青 未来赤
if(shot1fla==0){
sa_bm.bitmapData.draw(video);
sa_bm.bitmapData=threshold_filter(sa_bm.bitmapData);
//photo_bm.bitmapData.threshold(photo_bd,photo_bd.rect,pnt,"<",thrCol,col,mskCol,true);
//photo_bm.bitmapData.threshold(photo_bd,photo_bd.rect,pnt,">",thrCol1,col1,mskCol1,true);
photo_bdfront=sa_bm.bitmapData.clone();
shot1fla=1;
}
else if(shot1fla==1){
photo_bdback=photo_bdfront.clone();
sa_bm.bitmapData.draw(video);
sa_bm.bitmapData=threshold_filter(sa_bm.bitmapData);
//photo_bm.bitmapData.threshold(photo_bd,photo_bd.rect,pnt,"<",thrCol,col,mskCol,true);
//photo_bm.bitmapData.threshold(photo_bd,photo_bd.rect,pnt,">",thrCol1,col1,mskCol1,true);
photo_bdfront=sa_bm.bitmapData.clone();
//sa_bm.bitmapData=photo_bdfront.compare(photo_bdback) as BitmapData;
}
}
// BitmapData#threshold()メソッド使用版
function threshold_filter(s:BitmapData):BitmapData {
var threshold:uint=0x00777777;
var d:BitmapData = new BitmapData(s.width, s.height);
var r:Rectangle = new Rectangle(0, 0, s.width, s.height);
d.fillRect(r, 0xFFFFFFFF); // 不透明白で塗りつぶす
// 閾値以下を不透明黒にする
d.threshold(s, r, new Point(0, 0), "<=",threshold, 0xFF000000, 255, false);
return d;
}
//-----------------------------------------------------------------//
//webcamの設定
//-----------------------------------------------------------------//
public function initCamera():void {
/*接続されたWEBCAMの処理*/
if ( camera != null ) {
//WEBCAMの解像度とFPSを設定
camera.setMode(320,240,30,true);
// ビデオオブジェクト配置:サイズ指定
video = new Video( camera.width,camera.height );
video.x = 0;
video.y = 0;
// カメラ設定
video.attachCamera( camera );
// addChildで表示
addChild( video );
} else {
trace("カメラが接続されていません");
}
}
//-----------------------------------------------------------------//
//右側の画面の設定
//-----------------------------------------------------------------//
function initPhoto() {
sa_bd = new BitmapData(320, 240, false, 0x00DDDDDD);
sa_bm = new Bitmap(sa_bd);
sa_bm.x = 0;
sa_bm.y = 240;
addChild(sa_bm);
}
}
}