我在使Flash AS3相机正常工作时遇到了一些问题。如果你能提供帮助,非常感谢。我看了ol的细节:
我能够在发布到SWF时,让网络摄像头启动并运行并且一切正常,弹出“我可以访问你的相机对话框”,它会返回静音状态。
•第一个问题:有没有办法让它可以绕过用户权限,总是授予它?我们正在运行一个自助服务终端应用。以下方法是否适用于AIR应用程序? https://stackoverflow.com/questions/3266939/flash-grant-access-to-webcam-programmatically-behind-the-scenes
•第二个问题:正如我所说,我可以让网络摄像头/摄像头连接在IDE和浏览器中发布SWF时正常工作。但是,如果我将项目切换为AIR的发布并运行air app,或者在IDE中进行测试,我根本不会得到安全权限对话框。没有。也许安全盒在屏幕外?有没有办法控制位置?在AIR中使用网络摄像头有什么不同吗?
我很高兴不发布到AIR,但是要使用SWF - 只需要能够读取/写入本地磁盘上的XML文件并认为AIR只能这样做吗?
感谢您的帮助!
代码:
private function initTracking() : void
{
var camW : int = 840;
var camH : int = 640;
// Create the camera
_cam = Camera.getCamera();
if (_cam == null)
{
trace("Unable to locate available cameras.");
return;
}
else
{
trace("Found camera: " + _cam.name);
_cam.addEventListener(StatusEvent.STATUS, camStatusHandler);
_cam.setMode(camW, camH, stage.frameRate);
// Create a video
_vid = new Video(camW, camH);
_vid.attachCamera(_cam);
trace("camera ", _cam, " attached to video ", _vid);
// Create the Motion Tracker
_motionTracker = new MotionTracker(_vid);
// We flip the input as we want a mirror image
_motionTracker.flipInput = true;
}
}
private function camStatusHandler(event:StatusEvent):void
{
trace("camStatusHandler::");
if (_cam.muted)
{
trace("Unable to connect to active camera.");
}
else
{
trace("able to connect to active camera.");
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false,0,true);
}
// Remove the status event listener.
_cam.removeEventListener(StatusEvent.STATUS, camStatusHandler);
}
答案 0 :(得分:1)
如果您发布为AIR,则没有安全对话框(swfs的安全框可以阻止'黑客'在用户不知情的情况下控制用户网络摄像头。)
如果您的代码在swf中运行,它也可以在AIR应用程序中运行而无需任何更改 - 假设AIR在桌面而不是移动设备上运行?
如果您在发布为AIR应用时未看到网络摄像头输出,请发布相关代码。
编辑:
AIR应用程序不会发生StatusEvent.STATUS事件 - 当用户关闭安全对话框时会触发它 - 因此永远不会调用camStatusHandler。
所以完全删除camStatusHandler函数,也就是这行:
_cam.addEventListener(StatusEvent.STATUS, camStatusHandler);
并将来自camStatusHandler的重要代码添加到initTracking的末尾:
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false,0,true);