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

Webカメラの保存テスト

Web カメラの保存テスト
ダブルクリックで画像を保存する。
//forked from : mogera's 保存サンプル  
// Web カメラの保存テスト
//ダブルクリックで画像を保存する。

package  {
	import com.adobe.images.JPGEncoder;
	import flash.net.FileReference;
	import flash.events.*;
	import flash.net.FileReferenceList;
	import flash.text.TextField;
	import flash.text.TextFieldType;
	import flash.utils.ByteArray;
	import flash.display.*;
	import flash.media.*;
        import flash.geom.Matrix;
	
	[SWF(width="464", height="464",backgroundColor="#ffffff",frameRate="30")]   
	public class Save extends MovieClip{
		private var mc:MovieClip;
                private var mt:Matrix = new Matrix();

		public function Save() {
			mc= this;
			var cam:Camera = Camera.getCamera();
		        if (cam != null) 
			    trace("Camera"+Camera.names);

                        //カメラのキャプチャモードを指定の要件に最も近いネイティブモードに設定		        
                        cam.setMode(464,464,30,true);

			var v:Video = new Video(464, 464);
       			v.attachCamera(cam);
                        mc.addChild(v);
                        
                        //鏡みたいに反転
                        mt.scale(-1, 1);
                        mt.translate(cam.width,0);
                        mc.transform.matrix=mt;
                        			
			//保存(JPG)
  			mc.stage.doubleClickEnabled = true;
                        mc.stage.addEventListener(MouseEvent.DOUBLE_CLICK,SaveFile(SaveJPG, "test.jpg"));
                         	
		}
		
		private function SaveFile(encFunc:Function, fileName:String):Function {
		
			return function(e:MouseEvent) : void
			{
				
				var ff:FileReference = new FileReference();
				ff.addEventListener(Event.OPEN, function(e:Event):void { trace("open");  } );
				ff.addEventListener(ProgressEvent.PROGRESS, function(e:ProgressEvent):void { trace("progress");  } );
				ff.addEventListener(Event.COMPLETE, function(e:Event):void { trace("complete");  } );
				ff.addEventListener(Event.CANCEL, function(e:Event):void { trace("cancel");  } );
				ff.addEventListener(Event.SELECT, function(e:Event):void { trace("select");  } );
				ff.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent):void { trace("ioError");  } );
				ff.save(encFunc(), fileName);
			}

		}
		
                //  JPGでセーブ
		private function SaveJPG() : ByteArray
		{
			var bmp_data:BitmapData = new BitmapData(mc.width, mc.height);

                        //鏡みたいに反転
                        bmp_data.draw(mc, mt);
                        //bmp_data.draw(mc)
			
			var jpgEncoder:JPGEncoder = new JPGEncoder(80);
			var jpgData:ByteArray = jpgEncoder.encode(bmp_data); 

			return jpgData;
		}
	}
}