0

Flash AS3 カメラを正しく動作させるのに問題があります。お役に立てれば幸いです。私はolThe詳細を見ました:

SWF にパブリッシュすると、ウェブカメラを起動して実行することができ、すべて正常に動作し、「カメラにアクセスできますか」というダイアログが表示され、ミュートされているかどうかが返されます。

• 最初の質問: ユーザー許可をバイパスできるようにする方法はありますか? キオスクアプリを実行しています。次の方法は AIR アプリで機能しますか? https://stackoverflow.com/questions/3266939/flash-grant-access-to-webcam-programmatically-behind-the-scenes

• 2 番目の質問: 前述のとおり、IDE およびブラウザーで SWF をパブリッシュする場合、Web カメラ/カメラ フックアップを正常に動作させることができます。しかし、プロジェクトを AIR 用に公開するように切り替えて、air アプリを実行するか、IDE でテストすると、セキュリティ許可ダイアログがまったく表示されません。何もない。セキュリティボックスが画面外にあるのでは?配置を制御する方法はありますか?AIR 内から Web カメラを使用する場合、何か違いはありますか?

私は 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 のセキュリティ ボックスは、「ハッカー」が知らないうちにユーザーの Web カメラを制御するのを防ぐためにあります)。

コードが swf で動作する場合、AIR アプリでも変更を加える必要なく動作するはずです。AIR がモバイル デバイスではなくデスクトップで実行されていると仮定しますか?

AIR アプリとして公開するときに Web カメラの出力が表示されない場合は、関連するコードを投稿してください。

編集:

StatusEvent.STATUS イベントは AIR アプリでは発生しません。ユーザーがセキュリティ ダイアログを閉じたときに発生します。そのため、camStatusHandler が呼び出されることはありません。

したがって、 camStatusHandler 関数を完全に削除し、次の行も削除します。

_cam.addEventListener(StatusEvent.STATUS, camStatusHandler);

そして、重要なコードを camStatusHandler から initTracking の最後に追加します。

addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false,0,true);
于 2013-04-01T20:15:17.003 に答える