2013-09-05 72 views
1

初步注意事項:我使用haxe編寫和編譯代碼。haxe/flash:Camera.getCamera()按名稱返回null

情況如下:我在同一臺機器上最多有四臺攝像機,我需要分別捕獲它們。 flash.media.Camera.getCamera()取一個名字,我想這是我想要定位的相機的名字。我從flash.media.Camera.names數組中獲取名稱。

是否真的有可能捕獲目標相機或只會始終得到系統默認值? flash.media.Camera.names列出了所有連接的相機,所以我真的希望我可以單獨針對它們。

下面是有問題的代碼。

class Capture { 
    static function main(){ 

     var mc:flash.display.MovieClip = flash.Lib.current; 
     var i:Int = 0; 

     trace(flash.media.Camera.names); 

     for(camera in flash.media.Camera.names){ 

      trace(camera); 
      trace(Type.typeof(camera)); 

      var xpos = 490; 
      var ypos = 10; 

      var rawvideo:flash.media.Video = new flash.media.Video(480, 360); 
      var cam:flash.media.Camera = flash.media.Camera.getCamera(camera); 

      trace(cam); 

      cam.setMode(640, 480, 30); 
      cam.setQuality(0, 100); 

      rawvideo.attachCamera(cam); 
      rawvideo.scaleX = -1; 

      switch(i){ 
       case 0: 
       case 1: 
        xpos += 490; 
       case 2: 
        ypos += 370; 
       case 3: 
        xpos += 490; 
        ypos += 370; 
      } 

      i++; 

      rawvideo.x = xpos; 
      rawvideo.y = ypos; 

      if (cam != null){ 
       var videoContainer:flash.display.MovieClip = new flash.display.MovieClip(); 
       videoContainer.addChild(rawvideo); 
       mc.addChild(videoContainer); 
      } else { 
       trace("No Camera"); 
      } 
     } 
    } 
} 

回答

1

奇怪的是,getCamera的並沒有真正把相機的名稱(從名稱數組),但一個字符串表示的名稱數組中的索引位置。從相機getCamera文檔:

To specify a value for this parameter, use the string representation of the zero-based index position within the Camera.names array. For example, to specify the third camera in the array, use Camera.getCamera("2").

+0

有一定的道理。我有一個名稱陣列,如[Logitech Cam,Logitech Cam,Logitech Cam#2]。所以這個名字並不是一個獨特的標識符。但它必須是索引的字符串,這很奇怪:) – thgie