2013-04-01 45 views
0

我在使Flash AS3相機正常工作時遇到一些問題。如果你能幫助,非常感謝。我看着ol詳細信息:Flash AS3和網絡攝像頭:AIR的問題

我可以,當發佈到SWF,使網絡攝像頭啓動並運行,並且一切正常,彈出'我可以訪問您的攝像頭對話框',它將返回靜音或不靜音。

•第一個問題:有沒有什麼辦法讓它這樣我就可以繞過用戶的許可後,總是授予它?我們正在運行自助服務終端應用。以下方法適用於AIR應用程序嗎? https://stackoverflow.com/questions/3266939/flash-grant-access-to-webcam-programmatically-behind-the-scenes

•第二個問題:正如我所說的,當在IDE中和瀏覽器中發佈SWF文件時,我可以使攝像頭/ Camera連接正常工作。但是,如果我將項目切換爲針對AIR進行發佈並運行無線應用程序,或者在IDE中進行測試,我根本沒有得到安全權限對話框。沒有。也許安全盒在屏幕外?有某種方法可以控制展示位置嗎?從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); 
    } 

回答

1

如果您發佈空氣,不存在安全對話(主權財富基金的安全箱有一個攝像頭的用戶不知情的情況下阻止「黑客」取得控制權)。

如果你的代碼在SWF工作,它也應該在AIR應用程序的工作,而無需任何改變 - 假設AIR在桌面上運行,而不是在移動設備?

如果您沒有看到攝像頭的輸出,當你發佈的AIR應用程序,發佈相關的代碼。

編輯:

的StatusEvent.STATUS事件,不與AIR應用程序發生 - 因此camStatusHandler不會被調用 - 當用戶關閉安全對話框它觸發。

所以完全刪除camStatusHandler功能,並且也這條線:

_cam.addEventListener(StatusEvent.STATUS, camStatusHandler); 

而且從camStatusHandler到initTracking的末尾添加重要的代碼:

addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false,0,true); 
+0

感謝。以下是我正在使用的代碼 - 在原始帖子末尾 – Cerulean

+0

中,您是否收到任何錯誤跟蹤或代碼報告中的一切正常? – 2013-04-01 20:24:35

+0

在IDE中運行AIR應用程序時,不會出現任何錯誤,但不會從camStatusHandler獲取任何類型的報告。 - 它似乎沒有被調用。我得到相機找到的痕跡語句。 - 客戶端在YCD kiosk播放器中運行它,並且希望我將它作爲AIR進行開發,但我不確定如何正常處理文件的寫入/讀取 - 它不會連接到互聯網,建立一個本地服務器連接,以保持在道路上似乎iffy。 – Cerulean