Доступ к камере в div - PullRequest
       34

Доступ к камере в div

0 голосов
/ 27 декабря 2010

В следующем почему камера не отображается в div.Is, что я делаю что-то здесь не так

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body>
<div id="test" style="display:block;"></div>
<a href="#" onclick="document.getElementById('test').addBlock();">Call addBlock</a>
<script type="text/javascript">
  swfobject.embedSWF('test.swf', 'test', '300', '300', '9.0.124', 'expressInstall.swf');
</script>

  <?xml version="1.0" encoding="utf-8"?>
  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="300" height="300" creationComplete="init()">
 <mx:Script>
    <![CDATA[
        import mx.controls.Alert;
                    import flash.display.InteractiveObject;
        import flash.display.Sprite;
        import flash.media.*;
        import flash.net.*;

        public static var cam:Camera =  Camera.getCamera();
        public static var video:Video = new Video(10, 20);
        private function init():void
        {
            ExternalInterface.addCallback('addBlock', addBlock);
        }

        private function addBlock():void
        {
            //Alert.show("addBlock called");
            if(cam != null)
            {   
                cam.setMode(640, 480, 30);
                video.attachCamera(cam);
                addChild(video);

            }
            else
            {

                trace("No Camera Detected");
                Alert.show("No Camera Detected");
            }




        }
    ]]>
</mx:Script>
  </mx:Application>

1 Ответ

1 голос
/ 27 декабря 2010

Первое, что я хотел бы сделать, это убедиться, что Flash на самом деле встроен. Если это так, что Javascript работает правильно, то здесь есть несколько возможных проблем. Во-первых, я не уверен, но думаю, что вы не захотите прикреплять камеру к видеообъекту, а вместо этого к видеоэкрану:

<mx:VideoDisplay x="784" y="276" width="0" height="0" id="video"/>

А затем сделайте:

video.addChild(cam);

Во-вторых, если вы используете Mac, стандартная функция getCamera () не работает 100% времени. То, что я бы порекомендовал вам сделать, это определить собственную функцию get camera, которая должна выглядеть примерно так:

private function getCamera():Camera{
    var camera:Camera;
    var index:int = 0;
    for (var i:int = 0; i < Camera.names.length; i++) {
        trace(Camera.names[i]);
        if (Camera.names[i] == "USB Video Class Video") { // for macs camera
                index = i;
        }
    }
    camera = Camera.getCamera(String(index));
    if (camera == null) {
        return null;
    }
    else {
        return camera;
    }
}

В основном, некоторые Mac имеют камеру по умолчанию, которая расположена в странном месте, где стандартный вызов getCamera не работает. Это должно помочь. Удачи!

...