0

我在让 Flash AS3 相机正常工作时遇到一些问题。如果您能提供帮助,不胜感激。我查看了 ol 的详细信息:

在发布到 SWF 时,我可以让网络摄像头启动并运行,一切正常,弹出“我可以访问您的摄像头对话框”,它返回静音与否。

• 第一个问题:有什么方法可以让我绕过用户权限,即始终授予它?我们正在运行一个自助服务终端应用程序。以下方法是否适用于 AIR 应用程序?https://stackoverflow.com/questions/3266939/flash-grant-access-to-webcam-programmatically-behind-the-scenes

• 第二个问题:正如我所说,当在 IDE 和浏览器中发布 SWF 时,我可以让网络摄像头/相机连接正常工作。但是,如果我将项目切换为为 AIR 发布并运行 air 应用程序,或者在 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); 
    }
4

1 回答 1

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);
于 2013-04-01T20:15:17.003 回答