前言:先说说为什么要采用flash方式实现摄像头拍照功能,本来我一开始使用Html5方式实现了摄像头拍照功能,结果客户测试时使用的浏览器是ie8,我去,我自己平常从来不用ie,直接在谷歌上测试,没啥问题,ie8上就直接挂掉了,即便是高版本的ie11也不行,我用浏览器调试过,ie上根本不能是使用getusermedia()方法,这个方法为undefined,没办法,只能问度娘了,最终确定了flash+as3.0+swfobject实现摄像头拍照的方案,而且这样的方式兼容性很强,基本上主流浏览器都能使用,而且低版本浏览器上也没问题。
实现过程:
一、制作swf文件
A、准备工作
1、需要安装制作fla的工具,我这里使用的是Adobe Flash Professional CS5.5。
2、需要了解actionscript语言编程。
3、至少能够简单使用cs工具。
B、制作步骤
1、新建一个ActionScript3.0文档,然后保存,文件路径和名称自定义,本文自定义为:myFrist.fla。
2、设置舞台大小为380*260,鼠标先定位到舞台上,然后找到属性面板设置舞台的长度和宽度。
3、找到库面板,创建一些元件,如下图所示:
Previe_view元件是为了回显拍照后的照片。
Label是为了显示一些错误信息。
Camera_view是为了放置摄像头
Border只是一个边框,可要可不要,要了要好看点
Button ,按钮元件,用来定义拍照,重新拍照,和保存的按钮。
4、舞台布局
1)首先拖动库面板中定义的preview_view元件到舞台上,然后找到属性面板,设置属性如下图:
主要是定义实例名称,以及该元件在舞台的位置,这里定义的实例名称为:camera_preview,位置为:x:10;y:10。
2)拖动border到舞台上,设置实例名称,以及位置和大小。
3)操作方式都是相似的,按照自己的设计把库中需要用到的元件放到舞台上,在属性面板中设置其属性。最终效果如下图:
5、舞台搭建好后,就需要写些代码来控制舞台元件的动作
1)找到时间轴面板,创建一个新的图层,自定义名称,我这里定义为action,效果如下图:
2)鼠标选择action后,按F9就打开代码编辑器,可以开始写一些动作。
代码如下,都有注释,纯属个人理解,可能存在错误的理解,请以实际情况为准
import flash.display.Bitmap;
import flash.display.BitmapData;
import com.adobe.images.PNGEncoder;
//首先设置按钮状态,一开始定义重新拍照和保存按钮不可用,只有当点击拍照后,才会可用
clear_btn.mouseEnabled=false;
save_btn.mouseEnabled=false;
//定义一个video视频元件
var vid:Video;
//获取摄像头,如果电脑中没有摄像头,返回为null
var cam:Camera = Camera.getCamera();
if (cam != null)
{ //