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雪的例子就不贴了,网上找下吧