C# + Flash 制作大头贴——Flash 部分
用C# + Flash 制作大头贴主要分为两个部分,Flash 部分 和 C# 部分。Flash 部分主要负责从摄像头获取图形像素数组,并传送到C#中处理。C# 部分负责将图形像素数组转换成具体的图片。
第一步,我们先看看,FLASH如何连接摄像头,并在FLASH中显示。
在FLASH库中,添加一个空的 视频组件。将组件从库中拖到场景中,命名为 local_video 。在场景第一帧中添加以下ACTIONSCRIPT
active_cam = Camera.get();//建立摄像头获取对象
// 设置对象的模式、显示品质,包括显示的长宽。比较旧的摄像头不一定都支持该写法,要多试试。
active_cam.setMode(320 , 240 , 99 , true );
active_cam.quality = 100;
active_cam.setQuality( 0 , 100 );
//设置视频组件的长宽
local_video._width = 320;
local_video._height = 240;
//将已经连接摄像头的对象添加进视频组件中
local_video.attachVideo( active_cam );
预览一下效果,是不是已经在Flash里面成功显示摄像头拍到的景象。
第二步,尝试将摄像头的景象保存在Flash中
将刚才场景第一帧ACTIONSCRIPT修改
import flash.display.*;//引用Flash 图形处理 API
myBitmap = new flash.display.BitmapData(320, 240, true, 0);//实例化一个图形处理对象
var tempObj = _root.createEmptyMovieClip("photo", 100);//动态建立一个 电影实例 ,用于显示截取摄像头景象的图片
tempObj._x = 300;
tempObj._y = 40;
active_cam = Camera.get();//建立摄像头获取对象
// 设置对象的模式、显示品质,包括显示的长宽。比较旧的摄像头不一定都支持该写法,要多试试。
active_cam.setMode(320 , 240 , 99 , true );
active_cam.quality = 100;
active_cam.setQuality( 0 , 100 );
//设置视频组件的长宽
local_video._width = 320;
local_video._height = 240;
//将已经连接摄像头的对象添加进视频组件中
local_video.attachVideo( active_cam );
在场景中,增加一个 电影实例 ,作按钮用,用于点击后执行保存摄像头景象动作。在 电影实例 上添加以下ACTIONSCRIPT。
on (release)
{
_root.myBitmap.draw(local_video);//将场景中 视频组件 的内容,绘画在图形处理对象中
_root.tempObj.attachBitmap(_root.myBitmap, 1, "always", true);//将图形处理对象的内容,绘画到用于显示的 电影实例 中
}
至此,FLASH 已经可以完成获取摄像头景象的功能了。
效果如下