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

Actionscript 3 haxe/flash:Camera.getCamera()按名称返回null,actionscript-3,flash,camera,haxe,Actionscript 3,Flash,Camera,Haxe,初步说明:我使用haxe编写和编译代码 情况如下:我在同一台机器上有多达四个摄像头,我需要分别捕捉它们。flash.media.Camera.getCamera()取了一个名字,我想这就是我要瞄准的相机的名字。我从flash.media.Camera.names数组中获取名称 真的有可能捕获目标摄像机吗?还是我总是只能获得系统默认值?flash.media.Camera.names列出了所有连接的摄像头,因此我真的希望能够单独瞄准它们 下面是有问题的代码 class Capture {

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

情况如下:我在同一台机器上有多达四个摄像头,我需要分别捕捉它们。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");
            }
        }
    }  
}

奇怪的是,getCamera并没有真正获取相机名称(来自names数组),而是一个表示names数组中索引位置的字符串。从Camera getCamera文档:


要指定此参数的值,请使用Camera.names数组中从零开始的索引位置的字符串表示形式。例如,要指定阵列中的第三个摄影机,请使用camera.getCamera(“2”)。

奇怪的是,getCamera实际上并没有获取相机名称(来自名称数组),而是一个表示名称数组中索引位置的字符串。从Camera getCamera文档:


要指定此参数的值,请使用Camera.names数组中从零开始的索引位置的字符串表示形式。例如,要指定阵列中的第三个摄影机,请使用camera.getCamera(“2”)。

有点道理。我得到了一个名称数组,比如[Logitech Cam,Logitech Cam,Logitech Cam#2]。因此,名称实际上不是唯一标识符。但它必须是一个索引字符串,这很奇怪:)有点道理。我得到了一个名称数组,比如[Logitech Cam,Logitech Cam,Logitech Cam#2]。因此,名称实际上不是唯一标识符。但它必须是一个索引字符串,这很奇怪:)