import flash.media.Camera;
import flash.display.BitmapData;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.filters.ConvolutionFilter;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.media.Video;
import flash.system.Security;
import flash.system.SecurityPanel;


var cam:Camera;
var vid:Video;
var bmpd:BitmapData;
var flakes:Array;

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

cam = Camera.getCamera();
Security.showSettings(SecurityPanel.CAMERA);
//视频大小和质量(宽度,高度,每秒帧数15对目前设置来看还算可以);
cam.setMode(320,240,15);
vid = new Video(320,240);
vid.attachCamera(cam);
//创建一个模糊滤镜
vid.filters=[new ConvolutionFilter(1,3,[0,4,-4]),new BlurFilter()];

var vid2:Video = new Video(320,240);
vid2.attachCamera(cam);
vid2.scaleX = -1;
vid2.x = 320;
addChild(vid2);

bmpd = new BitmapData(320,240,false);

flakes=new Array();
addEventListener(Event.ENTER_FRAME,onEnter);

function onEnter(event:Event):void
{
 bmpd.draw(vid,new Matrix(-1,0,0,1,bmpd.width,0));
 bmpd.threshold(bmpd,bmpd.rect,new Point(),"<",0x00220000,0xff000000,0x00ff0000,true);

 var snow:Snow=new Snow();
 snow.x = Math.random() * bmpd.width;
 addChild(snow);
 flakes.push(snow);

 for (var i:int=flakes.length-1; i>=0; i--)
 {
  snow = flakes[i] as Snow;
  if (bmpd.getPixel(snow.x,snow.y) == 0)
  {
   snow.update();
   if (snow.y > bmpd.height)
   {
    removeChild(snow);
    flakes.splice(i,1);
   }


  }
 }
}

 

snow.as雪的例子就不贴了,网上找下吧

posted on 2012-07-09 21:38  cobrenda  阅读(216)  评论(0编辑  收藏  举报