检测摄像头和麦克风状态并自动进行处理的类

在对客户的摄像头和麦克风进行探测时,有许多的不确定性。例如,客户可能会禁用摄像头,可能有一个以上的摄像头,还可能先允许使用摄像头,再使用“属性”菜单禁用摄像头。因此,前几天升级聊天室程序的时候,就就写了这样一个类来进行处理,还可以方便在使用了摄像头和麦克风的程序中使用。

其中,Checker类仅用于检测摄像头和麦克风状态并返回;Selecter类继承Checker类,它不仅和Checker一样返回状态,同时也回根据当前的状态做出反映。例如,如果禁用了摄像头,就会显示一个按钮,单击可以打开“设置”对话框。只有当允许使用摄像头时,此按钮才会消失。如果有一个以上的摄像头,则会显示一个下拉列表并提供选择按钮。

用法可以看下面的示例,还提供了一些方法大家可以自行察看as文件。其中,检测麦克风的功能还不完善。

使用示例: 继续阅读检测摄像头和麦克风状态并自动进行处理的类

BitmapData类不能正常获取Video中的像素

在制作大头贴程序时,发现直接使用BitmapData类绘制Video对象的像素值时,虽然已经设定了Video的 _width_height 属性,BitmapData还是只能绘制160×120个像素。

后来发现,Video的实际像素值是和width与height属性相关。这两个属性都是只读属性,不能设置。它们的值来源于Camera。使用 Camera.setMode 可以设置这两个值。

但是,即使使用setMode设定了Camera的属性,BitmapData仍然只能绘制160×120像素!代码如下: 继续阅读BitmapData类不能正常获取Video中的像素

Flash8帮助中关于Camera.setMode方法的描述错误

setMode(Camera.setMode 方法)
public setMode([width:Number], [height:Number], [fps:Number], [favorArea:Boolean]) : Void

参数
width:Number [可选] – 请求的捕获宽度,以像素为单位。默认值为 160。
height:Number [可选] – 请求的捕获高度,以像素为单位。默认值为 120。
fps:Number [可选] – 摄像头捕获数据应使用的请求速率,以每秒帧数为单位。默认值为 15。
favorArea:Boolean [可选] – 布尔值,指定如果摄像头不具有满足指定要求的本机模式时如何控制宽度、高度和帧频。默认值为 true,这意味着支持保持捕获大小;使用此参数选择与 width 和 height 值最匹配的模式,即使这样做会由于降低帧频而对性能有不利影响。若要最大限度地提高帧频,而不考虑摄像头的高度和宽度,请将 false 传递给 favorArea 参数。

上面是从Flash 8 中文版帮助中摘录的,从文字中可以看到setMode方法的每一个参数都是可选的。但实际上,必须至少提供前面三个参数,此方法才会工作。同样的,在FMS的帮助中,描述也是错误的。

利用下面这段代码可以检验一下: 继续阅读Flash8帮助中关于Camera.setMode方法的描述错误