haxe/flash:Camera.getCamera() 按名称返回 null



初步说明:我使用 haxe 来编写和编译代码。

情况如下:我在同一台机器上最多有四个摄像头,我需要单独拍摄它们。 flash.media.Camera.getCamera() 需要一个名字,我想它是我想要定位的相机的名称。我从flash.media.Camera.names Array中获取名称。

是否真的可以捕获目标相机,或者我只会始终获得系统默认值?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");
            }
        }
    }  
}

奇怪的是,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").

最新更新