我创建了一个cordova Android应用,用户可以点按链接并启动jsartoolkit。这一切都很好,但是如果我点击后退按钮然后再次打开链接,几次失败并出现错误:
" typeerror:artoolkit.setup不是函数"
当它尝试加载ARCameraParam (Data/camera_para.dat)
时发生了这种情况 - 我尝试将其直接加载到arcontroller即var arController = new ARController(video, 'Data/camera_para.dat')
并加载它,即arCamera = new ARCameraParam
}。
这个错误表明 artoolkit.min.js 在几次之后没有加载,但我知道为什么会这样。 它不是缓存问题 - 如果我在发生应用缓存时将其清除然后重试,它仍然无法加载。它在我第一次安装应用程序时总是正常工作,如果我强制停止应用程序,这表明从前一个会话运行的进程我不知道。当我点击后退按钮但是没有修复它时,我试过在arcontroller和arcameraparam上调用dispose。
有谁知道jsartoolkit可能正在运行哪些进程可能导致这样的错误?非常感谢任何建议。 相关代码:
window.ARThreeOnLoad = function() {
function gotStream(stream) {
camvideo.src = window.URL.createObjectURL(stream);
nextBit(camvideo);
track = stream.getVideoTracks()[0];
camvideo.onerror = function(e)
{ stream.stop(); };
stream.onended = noStream;
}
function noStream(e) {
alert("no stream " + e);
var msg = 'No camera available.';
if (e.code == 1) {
msg = 'User denied access to use camera.'; }
document.getElementById('errorMessage').textContent = msg;
}
var camvideo = document.getElementById('monitor');
var constraints = { video: {facingMode: {exact: "environment"}, width: 1280, height: 960} };
navigator.mediaDevices.getUserMedia(constraints).then(gotStream).catch(noStream);
}
function nextBit(video) {
var arController = new ARController(video, 'Data/camera_para.dat');
arController.onload = function() {
arController.image = video;