以下为什么相机没有显示在div中。这是我在这里做错了什么
<!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>
答案 0 :(得分:1)
首先,我要做的是确保Flash实际上是嵌入式的。如果Javascript工作正常,那么这里有一些可能的问题。首先,我不是肯定的,但我认为你不会想要将相机连接到视频对象,而是想要视频显示器:
<mx:VideoDisplay x="784" y="276" width="0" height="0" id="video"/>
然后做:
video.addChild(cam);
第二件事是,如果您使用的是Mac,标准的getCamera()函数在100%的时间内都不起作用。我建议你做的是定义你自己的相机功能,它应该是这样的:
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调用并不起作用。这个应该有所帮助。祝你好运!