我正在尝试在Windows 8上初始化相机。我已在项目和Windows 8设备上启用了网络摄像头功能。
这是我的代码:
var dialog = new Windows.Media.Capture.CameraCaptureUI();
var aspectRatio = { width: 1, height: 1 };
dialog.photoSettings.croppedAspectRatio = aspectRatio;
dialog.captureFileAsync(Windows.Media.Capture.CameraCaptureUIMode.photo).done(function (file) {
if (file) {
editPreviewPicture(file);
mainApp.pictureAccept('control');
} else {
}
}, function (e) {
console.log("Error while opening camera: ", e);
});
在'captureFileAsync'的行上,我收到以下错误:
运行时错误JavaScript:访问被拒绝。
我已经仔细检查了所需的一切,甚至下载了示例项目以检查代码并测试相机,一切都在该项目中正常工作。
提前致谢。
答案 0 :(得分:0)
我发现了问题。
上面的函数在这个代码块中:
WinJS.UI.Pages.define("/pages/queue/view.html", {
ready: function (element, options) {
}
}
问题是:就绪回调是针对DOM元素而不是针对javascript,因此它仍在处理aSync代码,而WinJS无法正确处理多个aSync进程。这就是我获得“拒绝访问”的原因。
现在解决这个问题。您需要使用timeOut创建一个promise,如下所示:
WinJS.Promise.timeout(500).then(
function (complete) {
// Camera initialization / Other aSync code here
},
function (error) { }
);
希望这可以帮助一些人!